home *** CD-ROM | disk | FTP | other *** search
/ Linux Cubed Series 7: Sunsite / Linux Cubed Series 7 - Sunsite Vol 1.iso / system / news / inn1.000 / inn1.4sec-linux-src.tar / inn / tools.linux / Install < prev    next >
Text File  |  1994-09-20  |  122KB  |  3,367 lines

  1.  
  2.  
  3.  
  4.  
  5.  
  6.  
  7.  
  8.  
  9.  
  10.                   Installing InterNetNews
  11.  
  12.  
  13.                          Rich $alz
  14.  
  15.                   Open Software Foundation
  16.                     11 Cambridge Center
  17.                     Cambridge, MA  02142
  18.  
  19.         _O_r_g_a_n_i_z_a_t_i_o_n _g_i_v_e_n _f_o_r _i_d_e_n_t_i_f_i_c_a_t_i_o_n _o_n_l_y;
  20.     _p_l_e_a_s_e _s_e_n_d _e_l_e_c_t_r_o_n_i_c _m_a_i_l _t_o <_r_s_a_l_z@_u_u_n_e_t._u_u._n_e_t>
  21.  
  22.  
  23.                           _A_B_S_T_R_A_C_T
  24.  
  25.           This document discusses how  to  install  and
  26.      set  up InterNetNews.  You should be familiar with
  27.      Usenet  and  networks;  the  first  section  gives
  28.      references  to documentation for these topics, and
  29.      the last appendix  gives  a  Usenet  overview  for
  30.      novices.
  31.  
  32.           This document also describes what many of the
  33.      programs  do and how they should be used.  Even if
  34.      you are a world-class expert at building and main-
  35.      taining  public software, you should probably read
  36.      this.
  37.  
  38.           This is revision 1.13, dated 1993/03/19.
  39.  
  40.  
  41.  
  42. _1.  _T_h_i_n_g_s _Y_o_u _S_h_o_u_l_d _K_n_o_w _B_e_f_o_r_e _Y_o_u _D_o _A_n_y_t_h_i_n_g
  43.  
  44.      InterNetNews is abbreviated _I_N_N, which is pronounced as
  45. the  three letters, _e_y_e _e_n _e_n.  It is a Usenet transport and
  46. expiration system for larger UNIX|-  systems  where  NNTP  is
  47. used for most Usenet traffic.
  48.  
  49.      This document is not a tutorial on Usenet.  If  you  do
  50. not  have much Usenet experience, you should read _U_s_i_n_g _U_U_C_P
  51. _a_n_d _U_s_e_n_e_t, ISBN 0-937175-10-2.  You might also find it use-
  52. ful  to  read  _M_a_n_a_g_i_n_g _U_U_C_P _a_n_d _U_s_e_n_e_t (get the most recent
  53. edition available), ISBN 0-937175-48-X.  Both books are pub-
  54. lished  by  O'Reilly  &  Associates;  send  inquiries  to to
  55. <nuts@ora.com>.
  56.  
  57. _________________________
  58. |- UNIX is a registered trademark of  Unix  Systems  La-
  59. boratories.
  60.  
  61.  
  62.  
  63.  
  64.                     February 14, 1992
  65.  
  66.  
  67.  
  68.  
  69.  
  70.                            - 2 -
  71.  
  72.  
  73.      You should know BSD-derived TCP/IP - at least  be  com-
  74. fortable  with host names and dotted-quad addresses.  If you
  75. have installation problems,  you  should  know  about  UNIX-
  76. domain  stream  and datagram sockets and the like.  In addi-
  77. tion to any documentation available from  your  vendor,  you
  78. might  find  it useful to read the two IPC tutorials in _U_N_I_X
  79. _P_r_o_g_r_a_m_m_e_r'_s _M_a_n_u_a_l:  _S_u_p_p_l_e_m_e_n_t_a_r_y _D_o_c_u_m_e_n_t_s _1.  Copies can
  80. be  purchased from the Usenix Association; send inquiries to
  81. <office@usenix.org>.
  82.  
  83.      There are two RFCs that are important to  InterNetNews.
  84. RFC  1036  describes  the  format of Usenet articles.  It is
  85. incomplete and has some errors, but it is  the  only  formal
  86. document  available.  RFC 977 defines NNTP, the Network News
  87. Transfer Protocol.  RFCs are available from several  places,
  88. including  anonymous  FTP to nnsc.nsf.net, where they can be
  89. found in the directory _r_f_c.  Both RFCs are  currently  being
  90. revised.   The  1036  revision  is most likely going to be a
  91. ``tightening-up''; since INN already has a strict  interpre-
  92. tation  of  the  RFC, this revision will probably not affect
  93. InterNetNews very much.  The  977  revision  is  adding  new
  94. features  and facilities, and while INN will not provide all
  95. of them, they will have some impact.
  96.  
  97.      InterNetNews does things differently  from  other  news
  98. software.  The most common Usenet systems for UNIX are B2.11
  99. and C News.  Both of them require a separate NNTP  implemen-
  100. tation.   The  one everyone uses is called ``NNTP.'' Because
  101. this is confusing (they don't  call  _s_e_n_d_m_a_i_l  ``SMTP''),  I
  102. will  refer  to  it as the ``reference implementation.'' You
  103. generally do not need to know  anything  about  these  other
  104. systems,  but  if you are curious, the official sites are as
  105. follows:
  106.  
  107.         Package      Host                  Directory
  108.         C News       ftp.cs.toronto.edu    pub/c-news
  109.         B2.11        ftp.uu.net            news/bnews-2.11
  110.         nntp         lib.tmc.edu           public
  111.  
  112. You might  find  the  files  _d_o_c/_b_i_b_l_i_o,  _d_o_c/_p_r_o_b_l_e_m_s,  and
  113. _d_o_c/_r_f_c_e_r_r_a_t_a in the C News distribution worthwhile reading.
  114. The first is a bibliography, the second  discusses  known  C
  115. News  porting  problems (see the DBZ sections in particular,
  116. and ignore most of the  shell  comments),  while  the  third
  117. lists some technical and philosophical errors in RFC 1036.
  118.  
  119.      The commands below assume that $_i_n_n is an  abbreviation
  120. for the top of the InterNetNews source tree.
  121.  
  122.      INN could not have been written without access  to  the
  123. freely-redistributable  sources  of B2.11, C News, and NNTP.
  124. In particular, I want to thank Rick Adams; Geoff Collyer and
  125. Henry Spencer; and Stan Barber, Erik Fair, Brian Kantor, and
  126. Phil Lapsley.  The financial support of  UUNET  Technologies
  127.  
  128.  
  129.  
  130.                     February 14, 1992
  131.  
  132.  
  133.  
  134.  
  135.  
  136.                            - 3 -
  137.  
  138.  
  139. is  also  greatly  appreciated.   The  beta-test  sites gave
  140. invaluable feedback.
  141.  
  142. _2.  _I_f _Y_o_u _A_r_e _I_m_p_a_t_i_e_n_t
  143.  
  144.      If you don't want to follow these  directions,  do  the
  145. following:
  146.  
  147.         cd $inn/config
  148.         cp config.dist config.data
  149.         chmod 644 config.data
  150.         vi config.data (or emacs, or whatever)
  151.         cd ..
  152.         make world install
  153.  
  154. Then go read the appendixes.  If you have any problems, read
  155. the rest of this document.
  156.  
  157. _3.  _D_i_s_t_r_i_b_u_t_i_o_n _R_o_a_d_m_a_p
  158.  
  159.      The INN sources are divided into the  following  direc-
  160. tories:
  161.  
  162. _f_r_o_n_t_e_n_d_s      Programs to  feed  articles  to  the  central
  163.                server and control it.
  164.  
  165. _i_n_n_d           The central NNTP server.  It accepts incoming
  166.                connections,  receives articles, and arranges
  167.                for them to be sent to downstream newsfeeds.
  168.  
  169. _b_a_c_k_e_n_d_s       Programs to transmit articles to other sites.
  170.  
  171. _e_x_p_i_r_e         Programs to purge the article files and  his-
  172.                tory database.
  173.  
  174. _n_n_r_p_d          An NNTP server for on-campus clients that  do
  175.                newsreading   (as  opposed  to  bulk  article
  176.                transfer).
  177.  
  178. _l_i_b            Library routines used by all the above.
  179.  
  180. _i_n_c_l_u_d_e        Header files used by all the above.
  181.  
  182.      The distribution also includes these directories:
  183.  
  184. _s_a_m_p_l_e_s        Prototype  scripts  and  configuration  files
  185.                that  might have to be edited before they are
  186.                installed.
  187.  
  188. _s_i_t_e           A place to store edited copies of  the  files
  189.                in the _s_a_m_p_l_e_s directory.
  190.  
  191. _d_o_c            Manual pages for all the above.
  192.  
  193.  
  194.  
  195.  
  196.                     February 14, 1992
  197.  
  198.  
  199.  
  200.  
  201.  
  202.                            - 4 -
  203.  
  204.  
  205. _c_o_n_f_i_g         Tools to configure the release for your site.
  206.  
  207.      Finally, there are a handful of files in the  top-level
  208. directory:
  209.  
  210. _R_E_A_D_M_E         A basic introduction.
  211.  
  212. _C_O_P_Y_R_I_G_H_T      The distribution copyright.  InterNetNews  is
  213.                freely   redistributable,   provided   proper
  214.                credit is given.
  215.  
  216. _M_A_N_I_F_E_S_T       A one-line description of every file  in  the
  217.                distribution.
  218.  
  219. _B_U_I_L_D          An interactive script  to  configure,  build,
  220.                and install INN.
  221.  
  222. _m_a_k_e_d_i_r_s._s_h    A script to build INN's directories.  As long
  223.                as  you  have write permission to install the
  224.                programs,  this  is  the  only  part  of  the
  225.                installation that needs to be done as root.
  226.  
  227. _M_a_k_e_f_i_l_e       Rules to call the other  Makefiles  and  make
  228.                distributions.
  229.  
  230. _I_n_s_t_a_l_l._m_s     This  document.   It  requires  the   ``-ms''
  231.                nroff/troff macro package.
  232.  
  233. _M_a_k_e_L_i_b        Script to build a directory with  a  replace-
  234.                ment   of   the   reference  implementation's
  235.                ``clientlib'' routines needed by remote _r_n.
  236.  
  237. _M_a_k_e_I_n_e_w_s      Script to build an _i_n_e_w_s distribution  direc-
  238.                tory.
  239.  
  240. _M_a_k_e_R_n_e_w_s      Script to build an _r_n_e_w_s distribution  direc-
  241.                tory.
  242.  
  243. _s_e_d_f._x_x_x       Various _s_e_d scripts to filter the  output  of
  244.                _l_i_n_t.
  245.  
  246. _4.  _B_u_i_l_d_i_n_g _t_h_e _S_y_s_t_e_m
  247.  
  248.      INN is built in steps.  First,  the  _s_u_b_s_t  program  is
  249. built.   Next,  a  configuration  file  containing key/value
  250. pairs is created.  _S_u_b_s_t reads this file and uses it to edit
  251. a  specific  set of files in the INN distribution.  (Most of
  252. the files that get modified are Makefiles or header  files.)
  253. The library is then built; _l_i_n_t is usually a good way to see
  254. if some of the basic configuration  parameters  are  set  up
  255. right.   The next step is to compile (and lint) all the pro-
  256. grams.  The programs are then installed, and  the  INN  data
  257. files are set up.
  258.  
  259.  
  260.  
  261.  
  262.                     February 14, 1992
  263.  
  264.  
  265.  
  266.  
  267.  
  268.                            - 5 -
  269.  
  270.  
  271.      The configuration process is deliberately not  interac-
  272. tive.   Configure  scripts  like  the  one  in _r_n are fun to
  273. watch, but they spend too much effort on the wrong job, like
  274. whether  _g_r_e_p  returns an exit status.  It is also difficult
  275. to change one parameter and rebuild the software.   (C  News
  276. has this same problem.)
  277.  
  278.      INN's method also has its flaws.   Because  almost  all
  279. configuration  data  is  in one header file, changing almost
  280. anything will force everything to be recompiled.
  281.  
  282. _4._1.  _B_u_i_l_d_i_n_g _s_u_b_s_t
  283.  
  284.      INN uses the C News _s_u_b_s_t program to automate the  con-
  285. figuration.   _S_u_b_s_t is a very clever way of safely editing a
  286. file under the control of a configuration  file.   For  more
  287. details,  see  the  documentation in _d_o_c/_s_u_b_s_t._1.  Thanks to
  288. Henry Spencer and Geoff Collyer for their permission to  use
  289. and redistribute _s_u_b_s_t.
  290.  
  291.      We will use _c_o_n_f_i_g._d_i_s_t as the  configuration  file  to
  292. test  the  version of _s_u_b_s_t that you build.  (You can always
  293. replace your config file with the distribution file  and  do
  294. another _m_a_k_e to restore the original versions.)
  295.  
  296.      The C News _s_u_b_s_t program is a shell  script  that  uses
  297. _s_e_d  to  do  the editing.  The INN configuration file is too
  298. large for some versions of _s_e_d.  The first step is to see if
  299. your _s_e_d will work.  To do this, type the following:
  300.  
  301.         cd $inn/config
  302.         cp config.dist config.data
  303.         make sedtest
  304.  
  305. If you get any error messages from _s_e_d such  as  ``too  much
  306. command  text''  (or if it dumps core) you have two choices.
  307. (You should also complain to your vendor.) One choice is  to
  308. use  another  version of _s_e_d, such as the one distributed by
  309. the  Free  Software  Foundation.   If  you  do  this,   edit
  310. _c_o_n_f_i_g/_M_a_k_e_f_i_l_e  and  change  the  line that defines the SED
  311. variable.  If you want to use the C News script, then do the
  312. following:
  313.  
  314.         cd $inn/config
  315.         make sh
  316.  
  317.  
  318.      The other choice is to use the C version of _s_u_b_s_t.  You
  319. might  want  to do this anyway, since it can be much faster.
  320. To do this, type the following:
  321.  
  322.         cd $inn/config
  323.         cp config.dist config.data
  324.         make c quiet
  325.  
  326.  
  327.  
  328.                     February 14, 1992
  329.  
  330.  
  331.  
  332.  
  333.  
  334.                            - 6 -
  335.  
  336.  
  337. If you get any compilation errors, you will have to edit the
  338. file  _c_o_n_f_i_g/_s_u_b_s_t._c.   If you are using an early version of
  339. AFS, you will have edit the file to  enable  the  USE_RENAME
  340. macro.  If you have to make any other changes, please let me
  341. know.
  342.  
  343.      Since _s_u_b_s_t changes source files,  you  might  want  to
  344. make  a  backup copy of all the files that will be modified.
  345. You can do this by typing  ``make  backup''  in  the  _c_o_n_f_i_g
  346. directory.   This will create a local tar file that contains
  347. all the files that will be modified into it.   Doing  ``make
  348. restore'' will unpacks the tar file.  (Since _s_u_b_s_t makes its
  349. changes safely, this step is optional.)
  350.  
  351. _4._2.  _E_d_i_t_i_n_g _c_o_n_f_i_g._d_a_t_a
  352.  
  353.      Once you have _s_u_b_s_t working, the next step is to set up
  354. your  configuration parameters.  This is the hardest part of
  355. installing INN.  _D_o_n'_t _p_a_n_i_c!  There are many  configuration
  356. parameters,  but it should be very easy for you to determine
  357. the answer for most of them.  To do this,  you  should  copy
  358. _c_o_n_f_i_g/_c_o_n_f_i_g._d_i_s_t,     the    distribution    master,    to
  359. _c_o_n_f_i_g/_c_o_n_f_i_g._d_a_t_a, your local copy.  INN is distributed  to
  360. compile and run under SunOS4.1 (without using <unistd.h> and
  361. other POSIX facilities) by default.
  362.  
  363.      The configuration file is divided  into  the  following
  364. sections:
  365.  
  366.         Make config parameters
  367.         Logging levels
  368.         Ownerships and file modes
  369.         C library differences
  370.         C library omissions
  371.         Miscellaneous config data
  372.         Paths to common programs
  373.         Paths related to the spool directory
  374.         Execution paths for innd and rnews
  375.         Sockets created by innd or clients
  376.         Log and config files
  377.         Innwatch configuration
  378.  
  379. You should have a copy of _c_o_n_f_i_g._d_a_t_a nearby as you read the
  380. next few sections.  It is probably a good idea to write down
  381. your changes on paper before you edit the file.
  382.  
  383.      The format of the file is very strict.  A line starting
  384. with a poundsign is a comment line.  All other lines must be
  385. in this format:
  386.  
  387.         parameter <_o_n_e-_o_r-_m_o_r_e-_t_a_b_s> value
  388.  
  389. If there is no ``value'' the ``<one-or-more-tabs>'' is still
  390. required.  Do not put quote marks around the values - if you
  391.  
  392.  
  393.  
  394.                     February 14, 1992
  395.  
  396.  
  397.  
  398.  
  399.  
  400.                            - 7 -
  401.  
  402.  
  403. do, you will usually get a syntax error while compiling  the
  404. system.  The discussion below uses quotes only to show where
  405. the values start and end.
  406.  
  407. _4._2._1.  _M_a_k_e _c_o_n_f_i_g _p_a_r_a_m_e_t_e_r_s
  408.  
  409.      This section is used primarily to identify the path  to
  410. your  C  compiler,  and what extra libraries or command-line
  411. switches are needed.  For example, you could put  _g_c_c  -_W_a_l_l
  412. on  the _C_C line.  If you need extra -_I flags put them on the
  413. _D_E_F_S line.  INN uses the _r_e_g_i_s_t_e_r declaration a great  deal.
  414. If  your  compiler is very good, you might want to add -_D_r_e_-
  415. _g_i_s_t_e_r= to the _D_E_F_S line  so  that  INN's  declarations  are
  416. ignored.
  417.  
  418.      The DBZ package can be compiled so that the database is
  419. memory-mapped.   If  you  want  to do this and have the _m_m_a_p
  420. system call, then add ``-DMMAP'' to the _D_B_Z_C_F_L_A_G_S parameter.
  421.  
  422.      If you need to link in other  libraries  (e.g.,  -_l_n_e_t)
  423. put them on the _L_I_B_S line.
  424.  
  425.      The Makefiles usually filter all _l_i_n_t output through  a
  426. _s_e_d  script.   If  you  are very paranoid, set _L_I_N_T_F_I_L_T_E_R to
  427. _c_a_t.  If your lint output is in the broken  multi-line  for-
  428. mat:
  429.  
  430.         value type declared inconsistently
  431.             exit        llib-lc(297) :: test.c(7)
  432.         function returns value which is always ignored
  433.             printf
  434.  
  435. Then set _L_I_N_T_F_I_L_T_E_R to be the ``sedf.sysv'' line.
  436.  
  437.      The _l_i_b directory also builds a _l_i_n_t library,  so  that
  438. you  can make sure the other programs are properly using the
  439. library  routines.   The  _L_I_N_T_L_I_B_S_T_Y_L_E  parameter  (used  in
  440. _l_i_b/_M_a_k_e_f_i_l_e  and  _l_i_b/_m_a_k_e_l_l_i_b._s_h)  controls  how  the _l_i_n_t
  441. library is built.  If your _l_i_n_t understands the ``-C'' flag,
  442. then  set  it  to  ``BSD''.   If you need the ``-o'' flag to
  443. build a library, then set it to  ``SYSV''.   If  neither  of
  444. these  work,  you  can  set  it  to ``NONE''; this will just
  445. create an empty file  so  that  the  other  Makefiles  don't
  446. break.   If  you  come  up with a fourth alternative, let me
  447. know.
  448.  
  449.      Unfortunately, on some systems _l_i_n_t is all but useless,
  450. so  complain to your vendor and take the output with a grain
  451. of   salt.    You   might   get    some    warnings    about
  452. ``struct _DDHANDLE''  being  undefined.  You can ignore them
  453. and ask your vendor to support the BSD ``-z'' lint flag.  If
  454. you  set  _H_A_V_E__U_N_I_S_T_D  to ``DO'' then you might get warnings
  455. about prototype mismatches for various functions declared in
  456. _i_n_c_l_u_d_e/_c_l_i_b_r_a_r_y._h.  You can ignore them or remove the lines
  457.  
  458.  
  459.  
  460.                     February 14, 1992
  461.  
  462.  
  463.  
  464.  
  465.  
  466.                            - 8 -
  467.  
  468.  
  469. from the INN header file.
  470.  
  471.      The _M_A_N_P_A_G_E_S_T_Y_L_E parameter (used  in  _d_o_c/_M_a_k_e_f_i_l_e  and
  472. _d_o_c/_p_u_t_m_a_n._s_h)  controls how manual pages are installed into
  473. your public directory while the _M_A_N_x parameters specify  the
  474. directories where they get installed.  If you do not want to
  475. install any manpages, set _M_A_N_P_A_G_E_S_T_Y_L_E to _N_O_N_E.
  476.  
  477. _4._2._2.  _L_o_g_g_i_n_g _l_e_v_e_l_s
  478.  
  479.      INN uses the modern _s_y_s_l_o_g that separates messages into
  480. both  levels and categories.  Look in your <_s_y_s_l_o_g._h> header
  481. file for a ``LOG_NEWS'' macro, and check your _s_y_s_l_o_g(3) man-
  482. page to make sure that _o_p_e_n_l_o_g takes three arguments.  If it
  483. doesn't, then you will have to use the library  routine  and
  484. server  provided in the _s_y_s_l_o_g directory.  This is described
  485. later.
  486.  
  487.      The different levels that are  described  in  the  _s_y_s_-
  488. _l_o_g(3)  manpage are confusing, so INN uses its own names for
  489. the four levels it uses:
  490.  
  491.         L_FATAL   Fatal error, about to exit
  492.         L_ERROR   Error that might require attention
  493.         L_NOTICE  Informational notice, no action needed
  494.         L_DEBUG   Protocol tracing or other debugging messages
  495.  
  496. Depending on how your _s_y_s_l_o_g._c_o_n_f(5) file  is  set  up,  you
  497. might want to change the _L__x_x_x parameters in this section.
  498.  
  499.      The  _s_c_a_n_l_o_g_s  script  assumes  that  the  first  three
  500. categories above are each directed into separate files.  See
  501. _d_o_c/_n_e_w_s_l_o_g._5,  _d_o_c/_n_e_w_s_l_o_g._8,  and  _s_y_s_l_o_g/_s_y_s_l_o_g._c_o_n_f  for
  502. details.  Logging is also described in more detail later.
  503.  
  504. _4._2._3.  _O_w_n_e_r_s_h_i_p_s _a_n_d _f_i_l_e _m_o_d_e_s
  505.  
  506.      The NNTP server needs to open the NNTP port; it is port
  507. number  119,  which  requires root access.  This is the only
  508. part of INN that needs this privilege:  all  other  programs
  509. can  run  under  the distinct user and group id specified by
  510. the _N_E_W_S_U_S_E_R and _N_E_W_S_G_R_O_U_P parameters.  Most  news  adminis-
  511. tration  tasks must be done as user _N_E_W_S_U_S_E_R (see the expla-
  512. nation of _c_t_l_i_n_n_d below).  In addition, _i_n_e_w_s will only  let
  513. the  _N_E_W_S_U_S_E_R  user  or  members of the _N_E_W_S_G_R_O_U_P group post
  514. control messages other than cancel.
  515.  
  516.      Some INN scripts (primarily the control message scripts
  517. and  the daily maintenance script) need to send email to the
  518. news maintainer.  The  _N_E_W_S_M_A_S_T_E_R  parameter  specifies  the
  519. right  address.   This  is  most often the login name of the
  520. account which has _N_E_W_S_U_S_E_R as its user id; use an  alias  to
  521. forward it to the right people.
  522.  
  523.  
  524.  
  525.  
  526.                     February 14, 1992
  527.  
  528.  
  529.  
  530.  
  531.  
  532.                            - 9 -
  533.  
  534.  
  535.      Some Usenet sites still use the  Path  header  line  to
  536. generate  their  email  reply  messages.  Using the Path has
  537. never been guaranteed to work, and INN tries  to  help  stop
  538. this  practice by refusing to generate valid Path addresses.
  539. The _P_A_T_H_M_A_S_T_E_R parameter specifies what _i_n_e_w_s should put  at
  540. the  tail  end of the Path line.  If your _N_E_W_S_M_A_S_T_E_R mailbox
  541. is getting cluttered, then you might want to change this  to
  542. be  an  alias  that rejects the message or drops it into the
  543. bit-bucket.  The default  value  is  ``not-for-mail''  which
  544. usually results in bounced email.
  545.  
  546.      The _x_x_x__M_O_D_E parameters  specify  the  permissions  for
  547. articles  and directories created within the spool area, and
  548. the active file, all of which are owned by user id _N_E_W_S_U_S_E_R.
  549.  
  550. _4._2._4.  _C _l_i_b_r_a_r_y _d_i_f_f_e_r_e_n_c_e_s
  551.  
  552.      Editing the parameters in this section will require you
  553. to look around at the files in your /_u_s_r/_i_n_c_l_u_d_e directory.
  554.  
  555.      The _S_I_Z_E__T parameter is the datatype  of  the  ``size''
  556. parameters  in  subroutine calls like _m_e_m_c_h_r and _f_r_e_a_d.  The
  557. _L_O_C_K__S_T_Y_L_E parameter specifies how  file-locking  should  be
  558. done.   _I_n_n_x_m_i_t is the only program that locks files; if you
  559. use the provided scripts, this isn't even necessary, so  you
  560. can set this to ``NONE'' if you have any compile problems.
  561.  
  562.      The _D_I_R__S_T_Y_L_E parameter specifies what is  returned  by
  563. your   _r_e_a_d_d_i_r(3)   routine.    This   will   be   either  a
  564. ``struct direct'' or a ``struct dirent''; set the  parameter
  565. to ``DIRECT'' or ``DIRENT'' as appropriate.
  566.  
  567.      If  you  do   not   have   UNIX-domain   sockets,   set
  568. _H_A_V_E__U_N_I_X__D_O_M_A_I_N to ``DONT.'' This means that INN will use a
  569. named pipe for the communication between _i_n_n_d  and  _c_t_l_i_n_n_d.
  570. It  also  means that there will be no local ``private'' port
  571. for _r_n_e_w_s to  use;  this  should  not  cause  any  problems,
  572. although it makes it easier for anyone to use _r_n_e_w_s and post
  573. fake news articles.  (You might also have to modify the _s_y_s_-
  574. _l_o_g  routines;  see  the  end  of the file _s_y_s_l_o_g/_R_E_A_D_M_E for
  575. details on this.)
  576.  
  577.      INN needs to know how many descriptors are available to
  578. use  for  files  and sockets.  There are several ways to get
  579. this number; the  _F_D_C_O_U_N_T__S_T_Y_L_E  parameter  specifies  which
  580. method  to  use.  On most systems, the _g_e_t_d_t_a_b_l_e_s_i_z_e routine
  581. will do this, so leave the default of ``GETDTAB.'' On  other
  582. systems  you  need  to  use the _g_e_t_r_l_i_m_i_t, _s_y_s_c_o_n_f or _u_l_i_m_i_t
  583. routine, so set the parameter to ``GETRLIMIT'', ``SYSCONF'',
  584. or  ``ULIMIT'',  respectively.   If  you  do not have any of
  585. those calls then set the parameter to ``CONSTANT'' and  edit
  586. the  file  _l_i_b/_g_e_t_d_t_a_b._c to return the right number.  To get
  587. this number, look for an _O_P_E_N__M_A_X constant  in  your  system
  588. header  files,  or  write  a  program  that repeatedly opens
  589.  
  590.  
  591.  
  592.                     February 14, 1992
  593.  
  594.  
  595.  
  596.  
  597.  
  598.                            - 10 -
  599.  
  600.  
  601. /_d_e_v/_n_u_l_l until it gets an error.
  602.  
  603.      The last few parameters in this  section,  _x_x_x_V_A_L,  are
  604. used  primarily  to  keep  _l_i_n_t  quiet.  These functions are
  605. declared in _i_n_c_l_u_d_e/_c_l_i_b_r_a_r_y._h, and the  return  values  are
  606. pretty  much always ignored.  You can usually determine what
  607. these values should be by examining your  manpages  or  your
  608. _l_i_n_t libraries.
  609.  
  610. _4._2._5.  _C _l_i_b_r_a_r_y _o_m_i_s_s_i_o_n_s
  611.  
  612.      INN uses library routines that might not be present  in
  613. all  UNIX  systems, although they should be.  The _l_i_b direc-
  614. tory provides versions of some of these routines,  including
  615. copies  of  the  freely-redistributable BSD string routines.
  616. The _M_I_S_S_I_N_G__S_R_C and _M_I_S_S_I_N_G__M_A_N parameters  can  be  set  to
  617. list  those  routines  that are missing from your C library.
  618. If you don't have _s_t_r_c_a_s_e_c_m_p and _s_t_r_n_c_a_s_e_c_m_p then  you  will
  619. need the _s_t_r_c_a_s_e_c_m_p module built into your INN library.  Add
  620. the ``.c'' and ``.o'' names to _M_I_S_S_I_N_G__S_R_C and  _M_I_S_S_I_N_G__O_B_J,
  621. respectively.
  622.  
  623.      The following routines are all found in the file of the
  624. same  name.   If they are missing from your system, add them
  625. the same way:
  626.  
  627.         memchr         strchr         getopt
  628.         memcmp         strrchr        mkfifo
  629.         memcpy         strspn         strerror
  630.         memset         strtok
  631.  
  632.  
  633.      If you are using version 1 of the GNU C compiler  on  a
  634. Sparc  running  SunOS, you should add _i_n_e_t__n_t_o_a as a missing
  635. function.  This is because the first version of  _g_c_c  didn't
  636. properly pass structures into routines compiled with the Sun
  637. C compiler.
  638.  
  639.      If you have an older version of _s_y_s_l_o_g add _s_y_s_l_o_g._c and
  640. _s_y_s_l_o_g._o to the appropriate parameters.
  641.  
  642.      Pyramid  machines  running  OSx  have  fast   assembly-
  643. language versions of the string routines in the ATT library.
  644. To  use  these  routines,  add   ``$(OSXATTOBJ)''   to   the
  645. _M_I_S_S_I_N_G__O_B_J_S  parameter.   This  will  cause _l_i_b/_M_a_k_e_f_i_l_e to
  646. extract the object files from the ATT library, and add  them
  647. to the INN library.
  648.  
  649. _4._2._6.  _M_i_s_c_e_l_l_a_n_e_o_u_s _c_o_n_f_i_g _d_a_t_a
  650.  
  651.      All the parameters in this section become macros in the
  652. file _i_n_c_l_u_d_e/_c_o_n_f_i_g_d_a_t_a._h.  You should at least look through
  653. the parameters up to _V_E_R_I_F_Y__C_A_N_C_E_L_S.   (If  set  to  ``DO'',
  654. then  _i_n_n_d  will  ignore  cancel messages unless the From or
  655.  
  656.  
  657.  
  658.                     February 14, 1992
  659.  
  660.  
  661.  
  662.  
  663.  
  664.                            - 11 -
  665.  
  666.  
  667. Sender header match those of the original poster.)  In  gen-
  668. eral,  however, you can leave this section pretty much alone
  669. until you have some experience running  INN.   Nevertheless,
  670. here  are  some  comments on some of the more useful parame-
  671. ters.
  672.  
  673.      _I_n_n_d  can  memory-map  the  _a_c_t_i_v_e  file  if  you   set
  674. _A_C_T__S_T_Y_L_E  to  ``MMAP''.   On  some systems, however, when a
  675. mapped file is updated its mtime is not updated.  Apparently
  676. some versions of System V Release 4 have this problem.  This
  677. causes problems for programs like _n_n_m_a_s_t_e_r which look at the
  678. _s_t__m_t_i_m_e  field  of the _s_t_a_t structure in order to determine
  679. if any new news has come in.  (_N_n_m_a_s_t_e_r is part  of  the  _n_n
  680. newsreading  program.)  The  best work-around is probably an
  681. hourly _c_r_o_n job that touches the _a_c_t_i_v_e file.
  682.  
  683.      There are a  number  of  parameters  that  control  the
  684. behavior of _r_n_e_w_s.  If you set _R_N_E_W_S__S_A_V_E__B_A_D to ``DO'' then
  685. articles that _i_n_n_d rejects for reasons like bad headers will
  686. be  saved  in  the __P_A_T_H__B_A_D_N_E_W_S directory; you will have to
  687. periodically scan this directory and clean it up.   You  can
  688. also  control  how _r_n_e_w_s logs duplicates (those aren't saved
  689. regardless of the value  of  _R_N_E_W_S__S_A_V_E__B_A_D),  logging  them
  690. through  _s_y_s_l_o_g,  to  a  file, or not.  Note that if you set
  691. _R_N_E_W_S__L_O_G__D_U_P_S to ``FILE'', then you  will  want  to  change
  692. __P_A_T_H__R_N_E_W_S__D_U_P__L_O_G,  which  appears  later in the file.  If
  693. you receive news from several UUCP feeds, you might want  to
  694. log  duplicates so that you can cut down your phone bills by
  695. optimizing  your  feeds.   The  _R_N_E_W_S_P_R_O_G_S  parameter   says
  696. whether or not to look in __P_A_T_H__N_E_W_S_P_R_O_G_S for commands named
  697. on the incoming ``#!'' line of news batches.   You  probably
  698. want  to  set this to ``DO''.  Make sure that the full path-
  699. name of _r_n_e_w_s,  __P_A_T_H__R_N_E_W_S,  does  not  conflict  with  the
  700. directory where your unpackers are put, __P_A_T_H__N_E_W_S_P_R_O_G_S.
  701.  
  702.      If _I_P_A_D_D_R__L_O_G is set to ``DO'' then the news  log  will
  703. report  the  IP  address of hosts that send articles, rather
  704. then what they put in the Path line.  This can be useful  if
  705. you  run  _i_n_n_d  with  the ``-a'' flag.  (If you do this, you
  706. might want to pick up  ``hf.tar.Z''  via  anonymous  FTP  to
  707. ee.lbl.gov; it is a filter that turns IP addresses into host
  708. names.)
  709.  
  710.      The  _x_x_x__T_I_M_E_O_U_T  parameters  control  various   timers
  711. within INN; you might want to change some of these depending
  712. on your system load.
  713.  
  714. _4._2._7.  _P_a_t_h_s _t_o _c_o_m_m_o_n _p_r_o_g_r_a_m_s
  715.  
  716.      INN uses a few standard programs like /_b_i_n/_s_h and _s_e_n_d_-
  717. _m_a_i_l.   If you don't have _s_e_n_d_m_a_i_l then you must have a pro-
  718. gram that accepts a full message - including  headers  -  on
  719. its standard input, and delivers it.  This program is speci-
  720. fied  by  the  __P_A_T_H__S_E_N_D_M_A_I_L  parameter,  and  is  normally
  721.  
  722.  
  723.  
  724.                     February 14, 1992
  725.  
  726.  
  727.  
  728.  
  729.  
  730.                            - 12 -
  731.  
  732.  
  733. ``/usr/lib/sendmail -t''.    The  parameter  is  actually  a
  734. _s_p_r_i_n_t_f format string that will  be  given  the  destination
  735. address  as  its  only argument.  on some sites (e.g., those
  736. running MMDF) the ``-t'' could be replaced with a ``%s''.
  737.  
  738.      INN puts most  of  its  executables  in  the  directory
  739. specified  by  the  __P_A_T_H__N_E_W_S_B_I_N  parameter.  Some programs
  740. expect _i_n_e_w_s and _r_n_e_w_s to be in certain places; for example,
  741. UUCP usually wants _r_n_e_w_s in /_b_i_n.  The default configuration
  742. puts these programs in only one spot; if you  need  to  have
  743. multiple  links  to  the  same  file, you will have to do it
  744. yourself after INN is installed.   If  you  have  additional
  745. scripts  and  programs that you use to maintain your system,
  746. you can put them in whatever directory you want.   You  will
  747. probably  need  to add __P_A_T_H__N_E_W_S_B_I_N to the PATH of any such
  748. scripts.
  749.  
  750.      If you have an /_e_t_c/_r_c._l_o_c_a_l file you should make  sure
  751. that  it  invokes  the  script  named  by the __P_A_T_H__N_E_W_S_B_O_O_T
  752. parameter.  On other systems (mostly System V  derivatives),
  753. the system boot procedure automatically runs all the scripts
  754. in a particular directory, such  as  /_e_t_c/_i_n_i_t._2.   In  that
  755. case,  you  should  pick a name like /_e_t_c/_i_n_i_t._2/_S_9_9_n_e_w_s and
  756. have the news boot script installed there, or install it  in
  757. the default /_e_t_c/_r_c._n_e_w_s and make the link yourself.
  758.  
  759.      The daily maintenance script, _n_e_w_s._d_a_i_l_y calls _s_c_a_n_l_o_g_s
  760. to  rotate  and  trim  log files, as well as generating sum-
  761. maries using _e_g_r_e_p and _a_w_k.  On some systems the  log  files
  762. are too big for these programs so you might have to complain
  763. to your vendor  and  install  the  versions  from  the  Free
  764. Software  Foundation.   The _s_c_a_n_l_o_g_s script has a short test
  765. you can run to see if your _e_g_r_e_p will work.
  766.  
  767. _4._2._8.  _P_a_t_h_s _r_e_l_a_t_e_d _t_o _t_h_e _s_p_o_o_l _d_i_r_e_c_t_o_r_y
  768.  
  769.      By default, all news articles are stored in directories
  770. under  /_u_s_r/_s_p_o_o_l/_n_e_w_s.   Be careful if you pick a different
  771. value - many newsreaders know about this directory name.
  772.  
  773.      INN uses a trick (which I first saw  in  C  News)  that
  774. lets  it  use this same directory to store its incoming news
  775. (spooled by _r_n_e_w_s when _i_n_n_d is not available), and its  out-
  776. going  batch  files.  Since no newsgroup can ever have a dot
  777. in its name, a directory like _o_u_t._g_o_i_n_g can never be a news-
  778. group  name,  and  it  is safe to put the news batchfiles in
  779. there.  This is used by the __P_A_T_H__S_P_O_O_L_N_E_W_S  parameter,  and
  780. the __P_A_T_H__B_A_T_C_H_D_I_R parameter.
  781.  
  782.      Do not make __P_A_T_H__L_O_C_K_S be in the  same  filesystem  as
  783. __P_A_T_H__S_P_O_O_L_N_E_W_S.   If you do this, then INN will not be able
  784. to create any lock files when your spool directory is  full.
  785. This  will probably mean that _n_e_w_s._d_a_i_l_y will not be able to
  786. run and that it won't call _e_x_p_i_r_e to  free  up  disk  space.
  787.  
  788.  
  789.  
  790.                     February 14, 1992
  791.  
  792.  
  793.  
  794.  
  795.  
  796.                            - 13 -
  797.  
  798.  
  799. You should also put __P_A_T_H__N_E_W_S_L_I_B on a separate partition if
  800. you can, but that is not as important because  it  tends  to
  801. fill up less often.
  802.  
  803.      If you change parameters in this section a great  deal,
  804. then there is a chance that the _m_a_k_e_d_i_r_s._s_h script will fail
  805. because some needed intermediate directories will not exist.
  806. This  should  not  be  a problem, as you can just create the
  807. directories yourself - make sure to set  the  ownership  and
  808. modes right - and re-run the script.
  809.  
  810. _4._2._9.  _E_x_e_c_u_t_i_o_n _p_a_t_h_s _f_o_r _i_n_n_d _a_n_d _r_n_e_w_s
  811.  
  812.      All control messages (other then ``cancel'')  are  car-
  813. ried out by scripts.  Your system must be able to _e_x_e_c shell
  814. scripts directly.  All  the  scripts  distributed  with  INN
  815. start with ``#! /bin/sh.''
  816.  
  817.      The __P_A_T_H__C_O_N_T_R_O_L_P_R_O_G_S parameter specifies  the  direc-
  818. tory where these scripts exist.  Do not set this to a public
  819. directory like /_b_i_n because some  bozo  might  send  out  an
  820. ``rm'' control message.
  821.  
  822.      The __P_A_T_H__R_N_E_W_S_P_R_O_G_S directory serves the same  purpose
  823. for  _r_n_e_w_s  when it needs to unpack batches.  The _R_N_E_W_S_P_R_O_G_S
  824. parameter specifies if the directory is really used.
  825.  
  826. _4._2._1_0.  _S_o_c_k_e_t_s _c_r_e_a_t_e_d _b_y _i_n_n_d _o_r _c_l_i_e_n_t_s
  827.  
  828.      The _i_n_n_d server and its clients (most notably  _c_t_l_i_n_n_d)
  829. create UNIX-domain sockets or named pipes.  They are created
  830. inside a ``firewall'' directory that gives access permission
  831. to  a  limited set of users.  For example, assume the direc-
  832. tory is /_u_s_r/_l_o_c_a_l/_n_e_w_s/_i_n_n_d and that it is  owned  by  user
  833. news  in  group news and has mode 0770.  Using these permis-
  834. sions, then only members of the news group can  use  _c_t_l_i_n_n_d
  835. to  create new groups because only they will be able to send
  836. a message to the _i_n_n_d socket.
  837.  
  838.      This directory (which is specified by the __P_A_T_H__I_N_N_D_D_I_R
  839. parameter)  is  also used to determine the user and group id
  840. of all sub-processes spawned by _i_n_n_d, as well as  the  owner
  841. of all news articles and files.  The owner of this directory
  842. is set at installation time and specified  in  the  ``Owner-
  843. ships and file modes'' section, above.
  844.  
  845. _4._2._1_1.  _L_o_g _a_n_d _c_o_n_f_i_g _f_i_l_e_s
  846.  
  847.      INN keeps its databases, and some control  files  their
  848. own  directory,  typically named /_u_s_r/_l_o_c_a_l/_n_e_w_s.  Log files
  849. are kept in /_v_a_r/_l_o_g/_n_e_w_s.  There  are  many  parameters  in
  850. this  section  that  refer  to  files within this directory.
  851. Some sites will want to globally replace ``/usr/local/news''
  852. with  something like ``/var/news'', and ``/usr/lib/newsbin''
  853.  
  854.  
  855.  
  856.                     February 14, 1992
  857.  
  858.  
  859.  
  860.  
  861.  
  862.                            - 14 -
  863.  
  864.  
  865. with ``/var/newsbin''
  866.  
  867.      There are two  files  that  contain  access  passwords,
  868. __P_A_T_H__N_N_T_P_P_A_S_S  and  __P_A_T_H__N_N_R_P_A_C_C_E_S_S.  The default location
  869. for these files is in /_u_s_r/_l_o_c_a_l/_e_t_c, so  that  it  is  gen-
  870. erally safe to export /_u_s_r/_l_o_c_a_l/_n_e_w_s (read-only is probably
  871. best).
  872.  
  873.      INN  programs  do  extensive  logging,  and  the  daily
  874. maintenance   scripts   do  extensive  summary  reports  and
  875. analysis of them.  It might take you some time to learn your
  876. way  around  the  INN  logging  system; start by reading the
  877. newslog manpages in the _d_o_c directory.
  878.  
  879. _4._2._1_2.  _I_n_n_w_a_t_c_h _c_o_n_f_i_g_u_r_a_t_i_o_n
  880.  
  881.      The INN server, _i_n_n_d, does not contain  any  checks  to
  882. see if there is enough free space on the disk or if the sys-
  883. tem load average is low enough to allow  article  reception.
  884. There  are two reasons for this.  The first reason is philo-
  885. sophical:  it is a mistake  to  bury  this  kind  of  policy
  886. information  inside  a program.  For example, you don't want
  887. to have to recompile the program just because you moved to a
  888. different   filesystem.    (Yes,  this  could  be  partially
  889. answered by moving the information  to  an  external  config
  890. file,  but  any compiled rules are still likely to be incom-
  891. plete.) The second reason is pragmatic:  there is  no  port-
  892. able  way  to  get standard measurements for the information
  893. needed.  For example, C News provides three  different  rou-
  894. tines  to  get  the  filesystem statistics (with conditional
  895. compilation) while the ``get  load  average''  file  in  IDA
  896. sendmail has over 700 lines.
  897.  
  898.      Rather than get tangled up in such a mess of  #ifdef's,
  899. INN  uses  an  external  program (shell script) that invokes
  900. _c_t_l_i_n_n_d to stop and start the server as necessary.  The pro-
  901. gram,   _i_n_n_w_a_t_c_h,   reads  the  control  file  _i_n_n_w_a_t_c_h._c_t_l.
  902. _I_n_n_w_a_t_c_h   is   documented   in   _d_o_c/_n_e_w_s._d_a_i_l_y._8,    while
  903. _i_n_n_w_a_t_c_h._c_t_l is documented in _d_o_c/_i_n_n_w_a_t_c_h._c_t_l._5.
  904.  
  905.      The parameters in this section control when the  server
  906. should  stop  accepting  articles,  and when it should start
  907. again.  You will have to examine _s_i_t_e/_i_n_n_w_a_t_c_h._c_t_l and prob-
  908. ably modify it, usually to check the amount of free space on
  909. the disks.  For example, there is a line in  the  file  that
  910. has this fragment in it:
  911.  
  912.         !!! df . | awk 'NR == 2 { print $4 }' ! ...
  913.  
  914. This is looking at the fourth field of the  second  line  to
  915. get  the  amount  of freespace.  You will have to change the
  916. ``2'' and ``4'' here, and on other lines, as appropriate for
  917. your  system.  (Changing the output of _d_f seems to be one of
  918. the things vendors like to do most; it is not worth my  time
  919.  
  920.  
  921.  
  922.                     February 14, 1992
  923.  
  924.  
  925.  
  926.  
  927.  
  928.                            - 15 -
  929.  
  930.  
  931. to have INN keep track of all of them.)
  932.  
  933.      The parameter  _I_N_N_W_A_T_C_H__S_L_E_E_P_T_I_M_E  specifies  how  fre-
  934. quently _i_n_n_w_a_t_c_h should check the system - the other parame-
  935. ters should be set with this in mind, eg: there needs to  be
  936. enough  free  space  on  the  filesystem  to  last  the next
  937. _I_N_N_W_A_T_C_H__S_L_E_E_P_T_I_M_E seconds.
  938.  
  939.      The _I_N_N_W_A_T_C_H__x_x_x_L_O_A_D parameters specify the load  aver-
  940. age  at  which  different actions should be taken.  They are
  941. integers, representing the load average  multipled  by  100.
  942. For  example,  if  you want to throttle the server when your
  943. load reaches 7.5, set _I_N_N_W_A_T_C_H__H_I_L_O_A_D to ``750.''
  944.  
  945.      The _I_N_N_W_A_T_C_H__x_x_x_S_P_A_C_E parameters  specify  the  minimum
  946. amount  of  disk  space needed for each of INN's three major
  947. filesystems.  The numbers are in ``local units,'' equivalent
  948. to whatever your _d_f uses (512-byte units, 1K blocks, etc).
  949.  
  950.      The _I_N_N_W_A_T_C_H__S_P_O_O_L_N_O_D_E_S parameter  specifies  how  many
  951. inodes must be available in your spool directory.
  952.  
  953. _4._3.  _T_y_p_i_c_a_l _c_o_n_f_i_g._d_a_t_a _c_h_a_n_g_e_s
  954.  
  955.      The following sections show some of  the  changes  that
  956. need  to  be  made  to _c_o_n_f_i_g._d_a_t_a so that INN will compile.
  957. They are only samples; ``your mileage may vary.''
  958.  
  959.      Note that if you are using the first release  of  _g_c_c_2,
  960. set _U_S_E__C_H_A_R__C_O_N_S_T to ``DONT''.
  961.  
  962.  
  963.         _A_I_X
  964.         DEFS              -I../include -D_NO_PROTO -U__STR__
  965.         FORK              fork
  966.         FREEVAL           void
  967.         FUNCTYPE          int
  968.         HAVE_ST_BLKSIZE   DONT
  969.         HAVE_TM_GMTOFF    DONT
  970.         LDFLAGS
  971.         LINTFILTER        | sed -n -f ../sedf.aix
  972.         LINTFLAGS         -wkD -b -h $(DEFS)
  973.         LINTLIBSTYLE      SYSV
  974.         LOCK_STYLE        FNCTL
  975.         MISSING_MAN
  976.         MISSING_SRC
  977.         NEED_TIME         DO
  978.         POINTER           void
  979.  
  980.      Under AIX 3.1, you must also use the _s_y_s_l_o_g that  comes
  981. with  INN.   This  is  not necessary for 3.2.  Some versions
  982. also need USE_UNION_WAIT _s_e_t _t_o ``_D_O_N_T''.
  983.  
  984.  
  985.  
  986.  
  987.  
  988.                     February 14, 1992
  989.  
  990.  
  991.  
  992.  
  993.  
  994.                            - 16 -
  995.  
  996.  
  997.  
  998.         _A/_U_X
  999.         LIBS              -lbsd
  1000.  
  1001.      Make sure you don't use _g_c_c version 1;  it  miscompiles
  1002. the socket calls in _i_n_n_d/_c_c._c.
  1003.  
  1004.  
  1005.         _B_S_D_I
  1006.         ABORTVAL        void
  1007.         ALARMVAL        u_int
  1008.         EXITVAL volatile void
  1009.         _EXITVAL        volatile void
  1010.         FREEVAL void
  1011.         GETPIDVAL       pid_t
  1012.         GID_T   gid_t
  1013.         HAVE_UNISTD     DO
  1014.         HAVE_VFORK      DONT
  1015.         HAVE_WAITPID    DO
  1016.         LSEEKVAL        off_t
  1017.         MISSING_OBJ
  1018.         MISSING_SRC
  1019.         _PATH_COMPRESS  /usr/bin/compress
  1020.         _PATH_EGREP     /usr/bin/egrep
  1021.         _PATH_MAILCMD   /usr/bin/Mail
  1022.         _PATH_SENDMAIL  /usr/sbin/sendmail -t
  1023.         PID_T   pid_t
  1024.         POINTER void
  1025.         QSORTVAL        void
  1026.         SIZE_T  size_t
  1027.         SLEEPVAL        u_int
  1028.         UID_T   uid_t
  1029.         USE_UNION_WAIT  DONT
  1030.         VAR_STYLE       STDARGS
  1031.  
  1032.      Change  the  _S_H_E_L_L  variable  in  _c_o_n_f_i_g/_M_a_k_e_f_i_l_e   and
  1033. _s_i_t_e/_M_a_k_e_f_i_l_e   to  point  to  /_u_s_r/_c_o_n_t_r_i_b/_b_i_n/_b_a_s_h.   Edit
  1034. _l_i_b/_M_a_k_e_f_i_l_e so that the _i_n_s_t_a_l_l target does not try to make
  1035. ../_l_l_i_b-_l_i_n_n._l_n.  You must also use the GNU _s_e_d; the version
  1036. distributed with BSDI 0.9.4.1 enters an infinite  loop  pro-
  1037. cessing newgroup messages.
  1038.  
  1039.  
  1040.  
  1041.  
  1042.  
  1043.  
  1044.  
  1045.  
  1046.  
  1047.  
  1048.  
  1049.  
  1050.  
  1051.  
  1052.  
  1053.  
  1054.                     February 14, 1992
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.                            - 17 -
  1061.  
  1062.  
  1063.  
  1064.         _H_P-_U_X8.0
  1065.         ABORTVAL          void
  1066.         ALARMVAL          unsigned int
  1067.         CLX_STYLE         FCNTL
  1068.         CTYPE             isXXXXX((c))
  1069.         DEFS              -I../include -DHPUX
  1070.         FDCOUNT_STYLE     SYSCONF
  1071.         FREEVAL           void
  1072.         GETPIDVAL         pid_t
  1073.         GID_T             gid_t
  1074.         HAVE_SETBUFFER    DONT
  1075.         HAVE_ST_BLKSIZE   DONT
  1076.         HAVE_TM_GMTOFF    DONT
  1077.         HAVE_UNISTD       DO
  1078.         HAVE_WAITPID      DO
  1079.         LINTFILTER        | sed -n -f ../sedf.sysv
  1080.         LINTFLAGS         -b -h $(DEFS)
  1081.         LINTLIBSTYLE      SYSV
  1082.         LOCK_STYLE        LOCKF
  1083.         LOG_INN_PROG      LOG_LOCAL7
  1084.         LOG_INN_SERVER    LOG_LOCAL7
  1085.         LSEEKVAL          off_t
  1086.         _PATH_MAILCMD     /usr/bin/mailx
  1087.         NOFILE_LIMIT      200
  1088.         PID_T             pid_t
  1089.         POINTER           void
  1090.         PROF
  1091.         QSORTVAL          void
  1092.         RANLIB            echo
  1093.         RES_STYLE         TIMES
  1094.         SIZE_T            size_t
  1095.         SLEEPVAL          unsigned int
  1096.         UID_T             uid_t
  1097.         USE_UNION_WAIT    DONT
  1098.         _EXITVAL          void
  1099.  
  1100.      You will probably also need  to  use  the  _b_d_f  command
  1101. instead of _d_f.
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.  
  1120.                     February 14, 1992
  1121.  
  1122.  
  1123.  
  1124.  
  1125.  
  1126.                            - 18 -
  1127.  
  1128.  
  1129.  
  1130.         _S_G_IIndigo
  1131.         ABORTVAL          void
  1132.         ALARMVAL          uint
  1133.         ACT_STYLE         MMAP
  1134.         CFLAGS            $(DEFS) -g -w
  1135.         CLX_STYLE         FCNTL
  1136.         _EXITVAL          void
  1137.         FORK              fork
  1138.         FREEVAL           void
  1139.         GID_T             gid_t
  1140.         HAVE_ST_BLKSIZE   DONT
  1141.         HAVE_TM_GMTOFF    DONT
  1142.         HAVE_UNISTD       DO
  1143.         LDFLAGS
  1144.         LIBS              -lmld
  1145.         LINTFILTER        | sed -n -f ../sedf.sysv
  1146.         LINTFLAGS          $(DEFS)
  1147.         LINTLIBSTYLE      SYSV
  1148.         LSEEKVAL          off_t
  1149.         POINTER           void
  1150.         QSORTVAL          void
  1151.         RANLIB            echo
  1152.         SIZE_T            size_t
  1153.         SLEEPVAL          uint
  1154.         UID_T             uid_t
  1155.         _PATH_COMPRESS    /usr/bsd/compress
  1156.  
  1157.      Also, the _M_I_S_S_I_N_G__x_x_x parameters should be empty.
  1158.  
  1159.  
  1160.  
  1161.  
  1162.  
  1163.  
  1164.  
  1165.  
  1166.  
  1167.  
  1168.  
  1169.  
  1170.  
  1171.  
  1172.  
  1173.  
  1174.  
  1175.  
  1176.  
  1177.  
  1178.  
  1179.  
  1180.  
  1181.  
  1182.  
  1183.  
  1184.  
  1185.  
  1186.                     February 14, 1992
  1187.  
  1188.  
  1189.  
  1190.  
  1191.  
  1192.                            - 19 -
  1193.  
  1194.  
  1195.  
  1196.         _S_o_l_a_r_i_s2.X/SunOS
  1197.         DEFS              -I../include -DSUNOS5
  1198.         USE_CHAR_CONST    DO
  1199.         CFLAGS            -O -Xa $(DEFS)
  1200.         LDFLAGS
  1201.         LIBS              -lnsl -lsocket -lelf
  1202.         LINTLIBSTYLE      SYSV
  1203.         LINTFLAGS         -b -h $(DEFS)
  1204.         LINTFILTER        | sed -n -f ../sedf.sysv
  1205.         RANLIB            echo
  1206.         VAR_STYLE         STDARGS
  1207.         SIZE_T            size_t
  1208.         UID_T             uid_t
  1209.         GID_T             gid_t
  1210.         PID_T             pid_t
  1211.         POINTER           void
  1212.         ALIGNPTR          long
  1213.         LOCK_STYLE        LOCKF
  1214.         HAVE_UNISTD       DO
  1215.         HAVE_SETSID       DO
  1216.         HAVE_TM_GMTOFF    DONT
  1217.         HAVE_WAITPID      DO
  1218.         USE_UNION_WAIT    DONT
  1219.         HAVE_VFORK        DONT
  1220.         HAVE_UNIX_DOMAIN  DONT
  1221.         CLX_STYLE         FCNTL
  1222.         RES_STYLE         TIMES
  1223.         FDCOUNT_STYLE     SYSCONF
  1224.         ABORTVAL          void
  1225.         ALARMVAL          unsigned
  1226.         GETPIDVAL         pid_t
  1227.         SLEEPVAL          unsigned
  1228.         QSORTVAL          void
  1229.         LSEEKVAL          off_t
  1230.         FREEVAL           void
  1231.         _EXITVAL          void
  1232.         MISSING_SRC
  1233.         MISSING_OBJ
  1234.         PATH_COMPRESS     /bin/compress
  1235.  
  1236.      Make sure you use the C version of subst.
  1237.  
  1238.  
  1239.  
  1240.  
  1241.  
  1242.  
  1243.  
  1244.  
  1245.  
  1246.  
  1247.  
  1248.  
  1249.  
  1250.  
  1251.  
  1252.                     February 14, 1992
  1253.  
  1254.  
  1255.  
  1256.  
  1257.  
  1258.                            - 20 -
  1259.  
  1260.  
  1261.  
  1262.         _S_y_s_t_e_mV
  1263.         FREEVAL           void
  1264.         GETPIDVAL         long
  1265.         HAVE_TM_GMTOFF    DONT
  1266.         HAVE_WAITPID      DO
  1267.         LDFLAGS
  1268.         LIBS              -lnsl -lsocket
  1269.         LINTFILTER        | sed -n -f ../sedf.sysv
  1270.         LINTFLAGS         -b -h $(DEFS)
  1271.         LINTLIBSTYLE      NONE
  1272.         LOCK_STYLE        FCNTL
  1273.         MANPAGESTYLE      NONE
  1274.         MISSING_MAN       strcasecmp.3
  1275.         MISSING_OBJ       strerror.o strcasecmp.o
  1276.         MISSING_SRC       strerror.c strcasecmp.c
  1277.         _PATH_MAILCMD     /usr/bin/mailx
  1278.         POINTER           void
  1279.         QSORTVAL          void
  1280.         RANLIB
  1281.         RES_STYLE         TIMES
  1282.         SIZE_T            unsigned int
  1283.         USE_CHAR_CONST    DONT
  1284.         USE_UNION_WAIT    DONT
  1285.  
  1286.      I was never able to  get  _l_i_n_t  to  be  useful  on  the
  1287. machine  I  used.   Some  versions of System V (for example,
  1288. Esix 4.0.3) need the following LIBS value:
  1289.  
  1290.         LIBS              -lresolv -lsocket -lnsl -L/usr/ccs/lib -lelf
  1291.  
  1292. On a Dell System V machine, you have to set _H_A_V_E__U_N_I_X__D_O_M_A_I_N
  1293. to ``DONT.''
  1294.  
  1295.  
  1296.         _U_l_t_r_i_x4.x
  1297.         ALARMVAL          unsigned int
  1298.         FREEVAL           void
  1299.         LDFLAGS
  1300.         LINTFILTER        | sed -n -f ../sedf.sysv
  1301.         LINTFLAGS         -b -u -x $(DEFS)
  1302.         LSEEKVAL          off_t
  1303.         MISSING_MAN
  1304.         MISSING_OBJ       syslog.o strerror.o
  1305.         MISSING_SRC       syslog.c strerror.c
  1306.         POINTER           void
  1307.         PROF              -p
  1308.         QSORTVAL          void
  1309.         SIZE_T            unsigned int
  1310.         SLEEPVAL          unsigned int
  1311.         _EXITVAL          void
  1312.  
  1313.      Ultrix also requires the new _s_y_s_l_o_g.  Some  sites  have
  1314. reported  problems  with using the _s_y_s_l_o_g that INN includes.
  1315.  
  1316.  
  1317.  
  1318.                     February 14, 1992
  1319.  
  1320.  
  1321.  
  1322.  
  1323.  
  1324.                            - 21 -
  1325.  
  1326.  
  1327. The file _j_t_k_o_h_l-_s_y_s_l_o_g-_c_o_m_p_l_e_t_e._t_a_r._Z in the /_p_u_b/_D_E_C direc-
  1328. tory on gatekeeper.dec.com has a ``for-Ultrix'' package that
  1329. handles both old and new _s_y_s_l_o_g  calls.   While  Ultrix  has
  1330. symlinks,  it  does  not  have the ``-follow'' option in its
  1331. _f_i_n_d command.  This is used in _e_x_p_i_r_e/_m_a_k_e_a_c_t_i_v_e._c; you will
  1332. have to either install the GNU _f_i_n_d or edit the source file.
  1333.  
  1334. _5.  _O_t_h_e_r _S_o_u_r_c_e _P_r_e_p_a_r_a_t_i_o_n_s
  1335.  
  1336.      In addition to setting up the  configuration  file,  it
  1337. might be necessary to do some other setups.
  1338.  
  1339. _5._1.  _S_y_s_t_e_m_s _w_i_t_h _o_l_d _s_y_s_l_o_g_s
  1340.  
  1341.      If you need to install the _s_y_s_l_o_g that  is  distributed
  1342. with  INN, go to the top of the distribution and type ``make
  1343. syslogfix''.  This will also compile  _s_y_s_l_o_g_d,  the  logging
  1344. daemon.   You  should  install this to replace your existing
  1345. daemon, usually in  /_e_t_c/_s_y_s_l_o_g.   You  will  also  need  to
  1346. install the new-style _s_y_s_l_o_g._c_o_n_f file.
  1347.  
  1348.      If you cannot replace _s_y_s_l_o_g_d on your machine, then see
  1349. the  file  _s_y_s_l_o_g/_R_E_A_D_M_E for information on how to set it up
  1350. as an alternate daemon.
  1351.  
  1352.      Ignore any complaints from _l_i_n_t about the  INN  sources
  1353. calling  _o_p_e_n_l_o_g with the wrong argument count.  In fact, if
  1354. you don't get any complaints, then something is  wrong  with
  1355. the way _s_y_s_l_o_g, <_s_y_s_l_o_g._h>, or the _l_i_n_t libraries are set up
  1356. on your system.
  1357.  
  1358. _5._2.  _T_h_e _D_B_Z _p_a_c_k_a_g_e
  1359.  
  1360.      INN uses the DBZ database package.  Thanks to Jon Zeeff
  1361. for  his permission to use and redistribute DBZ, as modified
  1362. by Henry Spencer. INN has its own set  of  modifications  to
  1363. DBZ.   The  changes  are made with the _p_a_t_c_h program and the
  1364. context diff  in  _l_i_b/_d_b_z._p_c_h.   If  you  don't  have  _p_a_t_c_h
  1365. installed,  then you can make the changes manually.  (If you
  1366. don't have Larry  Wall's  _p_a_t_c_h  program  get  it  from  any
  1367. _c_o_m_p._s_o_u_r_c_e_s._u_n_i_x  archive  as well as many FSF archives and
  1368. other places - you'll be glad you did.)
  1369.  
  1370.      If you are using _v_f_o_r_k (specified in the  _F_O_R_K  parame-
  1371. ter),  or you want to _m_m_a_p the database, then you must apply
  1372. the patch.  The Makefile in _l_i_b will normally do it for  you
  1373. automatically,  anyway.   The  beginning  of  the patch file
  1374. describes the changes made in more detail.  If  you  do  not
  1375. apply  the  patch,  then  you  must add add ``dbzalt.c'' and
  1376. ``dbzalt.o'' to the MISSING_SRC and MISSING_OBJ parameters.
  1377.  
  1378.      Apparently the System V  386  compiler  can't  optimize
  1379. _d_b_z._c  (the  GNU  C compiler doesn't have this problem).  If
  1380. you have ``-O'' in your _D_B_Z_C_F_L_A_G_S  configuration  parameter,
  1381.  
  1382.  
  1383.  
  1384.                     February 14, 1992
  1385.  
  1386.  
  1387.  
  1388.  
  1389.  
  1390.                            - 22 -
  1391.  
  1392.  
  1393. then take it out.
  1394.  
  1395. _5._3.  _U_s_i_n_g _w_r_i_t_e_v
  1396.  
  1397.      INN makes extensive use the _w_r_i_t_e_v system call to write
  1398. several  I/O  buffers  in a single call.  If you do not have
  1399. _w_r_i_t_e_v  then   you   must   copy   _i_n_c_l_u_d_e/_u_i_o._h   to   your
  1400. /_u_s_r/_i_n_c_l_u_d_e/_s_y_s  directory.  You must also add ``writev.c''
  1401. and ``writev.o'' to the MISSING_SRC and MISSING_OBJ  parame-
  1402. ters.
  1403.  
  1404.      The ``fake'' _w_r_i_t_e_v found in the _l_i_b directory  is  not
  1405. highly efficient.  You might want to write a better one that
  1406. tries to _m_a_l_l_o_c a new buffer and join all the elements.   Be
  1407. careful  about  doing  this  because  _i_n_n_d  can use very big
  1408. buffers.
  1409.  
  1410. _6.  _C_o_m_p_i_l_i_n_g _t_h_e _S_y_s_t_e_m
  1411.  
  1412.      Once the INN sources have  been  configured,  they  are
  1413. ready  to  be  compiled.   If you are very confident of your
  1414. changes, type the following:
  1415.  
  1416.         cd $inn
  1417.         make all
  1418.  
  1419. If you do not get any errors, skip  to  the  section  titled
  1420. ``Installing the System.''
  1421.  
  1422.      If you are confident, but careful, type:
  1423.  
  1424.         cd $inn
  1425.         make world
  1426.         cat */lint
  1427.  
  1428. This will compile everything, then run _l_i_n_t  in  all  direc-
  1429. tories.
  1430.  
  1431.      Another option is to run the _B_U_I_L_D script found at  the
  1432. top  of the source tree.  This will interactively configure,
  1433. compile, and install the system.  After running that script,
  1434. skip to the section titled ``Installing the System.''
  1435.  
  1436.      If you are more cautious, you should type  the  follow-
  1437. ing:
  1438.  
  1439.         cd $inn/config
  1440.         make quiet
  1441.         cd ..
  1442.  
  1443. This will use your already-tested _s_u_b_s_t  program  with  your
  1444. new  _c_o_n_f_i_g._d_a_t_a  file.  You should then follow the steps in
  1445. the following sections.
  1446.  
  1447.  
  1448.  
  1449.  
  1450.                     February 14, 1992
  1451.  
  1452.  
  1453.  
  1454.  
  1455.  
  1456.                            - 23 -
  1457.  
  1458.  
  1459. _6._1.  _B_u_i_l_d_i_n_g _t_h_e _L_i_b_r_a_r_y
  1460.  
  1461.      The next step is to build the INN library.  Do the fol-
  1462. lowing
  1463.  
  1464.         cd $inn/lib
  1465.         make libinn.a lint
  1466.  
  1467.  
  1468.      This will  build  the  library  and  run  _l_i_n_t  on  the
  1469. sources, putting the output into a file named _l_i_n_t.  If any-
  1470. thing fails to compile, you probably  made  a  configuration
  1471. error, most likely in the ``C library differences'' section.
  1472. In particular, double-check  the  _S_I_G_H_A_N_D_L_E_R  and  _x_x_x__S_T_Y_L_E
  1473. parameters.
  1474.  
  1475.      The _l_i_n_t output should be almost empty,  except  for  a
  1476. couple of ``possible pointer alignment problem'' warnings in
  1477. _d_b_z._c.  If you get much more than this,  then  you  probably
  1478. did  not  define  the _P_O_I_N_T_E_R or _S_I_Z_E__T parameters properly.
  1479. The _N_E_W and _R_E_N_E_W macros in _i_n_c_l_u_d_e/_m_a_c_r_o_s._h try to  capture
  1480. all  the  alignment  problems associated with dynamic memory
  1481. allocation.  Also double-check the  _A_L_I_G_N_P_T_R  parameter  and
  1482. the _C_A_S_T macro in _i_n_c_l_u_d_e/_m_a_c_r_o_s._h.
  1483.  
  1484.      If _l_i_n_t reports any other problems, you should take the
  1485. time  to  investigate  them.   Note that many _l_i_n_t libraries
  1486. have errors.  Also, you may get some problems in _y_a_c_c_p_a_r  in
  1487. _p_a_r_s_e_d_a_t_e._y;  these  are most likely in the _y_a_c_c-generated C
  1488. code.  If you get any of these, complain to your vendor.
  1489.  
  1490.      If you find a portability issue that I  missed,  please
  1491. let me know.
  1492.  
  1493.      Once the library is built, you should install it in the
  1494. top-level  INN  directory.  To do this type ``make install''
  1495. while still in the _l_i_b directory.  This will also compile  a
  1496. _l_i_n_t  library  for  use in linting the programs in the other
  1497. directories.
  1498.  
  1499.      Note that any time a change is made to the library  you
  1500. must   do   ``make install'';  it  is  not  enough  to  type
  1501. ``make libinn.a''.  This is a deliberate decision -  like  a
  1502. program,  compiling  a  library  is different from making it
  1503. available for others to use, and installing a library should
  1504. make it possible to run _l_i_n_t against it.
  1505.  
  1506. _6._2.  _C_o_m_p_i_l_i_n_g _t_h_e _P_r_o_g_r_a_m_s
  1507.  
  1508.      INN's  programs  are  separated  into  six  areas,   as
  1509. detailed  in  the  roadmap.   You'll  need to build each one
  1510. before you can install and use INN.
  1511.  
  1512.  
  1513.  
  1514.  
  1515.  
  1516.                     February 14, 1992
  1517.  
  1518.  
  1519.  
  1520.  
  1521.  
  1522.                            - 24 -
  1523.  
  1524.  
  1525. _6._2._1.  _T_h_e _F_r_o_n_t_e_n_d _P_r_o_g_r_a_m_s
  1526.  
  1527.      Frontends are those programs that talk to the main news
  1528. server,  either  offering  it  articles  or  controlling its
  1529. action.  This includes the following programs:
  1530.  
  1531. _i_n_e_w_s          The program that validates and prepares  news
  1532.                articles  and  gives  them  to _i_n_n_d.  This is
  1533.                mostly used  by  users  (usually  indirectly,
  1534.                through   programs   like  _P_n_e_w_s),  but  also
  1535.                through special facilities such as  news/mail
  1536.                gateways.
  1537.  
  1538. _r_n_e_w_s          Unpacks news  batches  from  UUCP  sites  and
  1539.                offers them to _i_n_n_d.
  1540.  
  1541. _c_t_l_i_n_n_d        This program controls _i_n_n_d, directing  it  to
  1542.                do  most  of  the  tasks a news administrator
  1543.                will have to do:  create  newsgroups,  update
  1544.                newsfeeds, and the like.
  1545.  
  1546.      To build these programs, type the following:
  1547.  
  1548.         cd $inn/frontends
  1549.         make all
  1550.  
  1551.  
  1552. _6._2._2.  _I_n_n_d
  1553.  
  1554.      The  next  program  is  the  main  news  server,  which
  1555. includes the following programs:
  1556.  
  1557. _i_n_n_d           _I_n_n_d accepts all  incoming  NNTP  connections
  1558.                and  either  processes their traffic or hands
  1559.                them off to the NNTP  ``newsreader''  server.
  1560.                It  accepts  articles, files them, and queues
  1561.                them so that they can be sent  to  downstream
  1562.                feeds.   _I_n_n_d  listens  on  the official NNTP
  1563.                port.  On most systems only root can do this.
  1564.                _I_n_n_d is careful to set the modes of any files
  1565.                it creates, as well as the privileges of  any
  1566.                processes it spawns.
  1567.  
  1568. _i_n_n_d_s_t_a_r_t      Sites that are concerned  about  large  root-
  1569.                access   programs   may   wish   to   install
  1570.                _i_n_n_d_s_t_a_r_t.   This  program  opens  the  port,
  1571.                changes  its  user and group ID to be that of
  1572.                the news administrator, and then _e_x_e_c's  _i_n_n_d
  1573.                with the open port.  It also sets up a secure
  1574.                execution environment.  It is a small program
  1575.                (about  100 lines) that is easily understood.
  1576.                You should use it because _i_n_n_d will run  fas-
  1577.                ter  because  it won't have to make any _c_h_o_w_n
  1578.                system calls.  If you make  _i_n_n_d_s_t_a_r_t  setuid
  1579.  
  1580.  
  1581.  
  1582.                     February 14, 1992
  1583.  
  1584.  
  1585.  
  1586.  
  1587.  
  1588.                            - 25 -
  1589.  
  1590.  
  1591.                root  then no news maintenance has to be done
  1592.                as root.
  1593.  
  1594.      To build these, type the following:
  1595.  
  1596.         cd $inn/innd
  1597.         make all
  1598.  
  1599.  
  1600.      Note that _i_n_n_d handles the filing and  distribution  of
  1601. certain  messages differently from other systems.  For exam-
  1602. ple, you can have newsgroups within ``control'' for the dif-
  1603. ferent  types of control messages.  See _i_n_n_d._8, _n_e_w_s_f_e_e_d_s._5,
  1604. and _a_c_t_i_v_e._5 in the _d_o_c directory for details.
  1605.  
  1606. _6._2._3.  _T_h_e _N_e_t_N_e_w_s _R_e_a_d_i_n_g _D_a_e_m_o_n
  1607.  
  1608.      _I_n_n_d implements a subset of the NNTP  protocol  -  only
  1609. those  commands  that are needed for peer sites to feed news
  1610. articles.  You must install _n_n_r_p_d to  allow  users  to  read
  1611. news.   If  a  connection comes in from a host that is not a
  1612. specified feed, then an _n_n_r_p_d process is spawned  to  handle
  1613. it.   (You  can debug _n_n_r_p_d by running it interactively; put
  1614. an entry for the host named ``stdin''  in  your  _n_n_r_p._a_c_c_e_s_s
  1615. file.)
  1616.  
  1617.      Build the newsreader server by doing the following:
  1618.  
  1619.         cd $inn/nnrpd
  1620.         make all
  1621.  
  1622. Note that if users on a peer machine  (one  that  feeds  you
  1623. news)  want to read news from your server, then you have two
  1624. choices.  You can use _n_n_t_p_d from the reference platform (See
  1625. Appendix  II)  and  make  sure  not to list the peer in your
  1626. _n_n_t_p._a_c_c_e_s_s file.  The other choice is to relink the reading
  1627. software  on  the other machine with the INN library so that
  1628. it uses the ``mode reader'' NNTP command extension.
  1629.  
  1630. _6._2._4.  _T_h_e _B_a_c_k_e_n_d _P_r_o_g_r_a_m_s
  1631.  
  1632.      The backend programs take articles that  _i_n_n_d  received
  1633. and  offer  them  to your news neighbors.  This includes the
  1634. following programs:
  1635.  
  1636. _a_r_c_h_i_v_e        A simple program to archive news articles.
  1637.  
  1638. _b_a_t_c_h_e_r        Collects  articles  into  batches  for   UUCP
  1639.                delivery.
  1640.  
  1641. _b_u_f_f_c_h_a_n       A program to split a single _i_n_n_d stream  into
  1642.                separate files.  It can buffer data, flushing
  1643.                files based on command-line switches.
  1644.  
  1645.  
  1646.  
  1647.  
  1648.                     February 14, 1992
  1649.  
  1650.  
  1651.  
  1652.  
  1653.  
  1654.                            - 26 -
  1655.  
  1656.  
  1657. _c_v_t_b_a_t_c_h       A program to turn a file  list  into  an  INN
  1658.                batchfile.   A  transition  aide that is only
  1659.                documented in the source.
  1660.  
  1661. _f_i_l_e_c_h_a_n       Another program to split a single _i_n_n_d stream
  1662.                into   separate  files.   It  is  system-call
  1663.                intensive, but requires no locking protocol.
  1664.  
  1665. _i_n_n_x_m_i_t        A replacement for _n_n_t_p_x_m_i_t from the reference
  1666.                implementation.  It reads a file containing a
  1667.                list of articles, and sends them to a host.
  1668.  
  1669. _n_n_t_p_g_e_t        A program to retrieve articles from a  remote
  1670.                site.
  1671.  
  1672. _s_h_l_o_c_k         A program to provide a locking  protocol  for
  1673.                shell scripts.
  1674.  
  1675. _s_h_r_i_n_k_f_i_l_e     A program to shrink a file by removing  lines
  1676.                from the beginning.  It is useful for purging
  1677.                backlogged batchfiles.
  1678.  
  1679. _s_y_s_2_n_f         A program to turn a B or C News _s_y_s file into
  1680.                an  INN _n_e_w_s_f_e_e_d_s file.  This is a transition
  1681.                aide that is only documented in the source.
  1682.  
  1683.      To build this set of programs, type the following:
  1684.  
  1685.         cd $inn/backends
  1686.         make all
  1687.  
  1688.  
  1689. _6._2._5.  _E_x_p_i_r_e
  1690.  
  1691.      This directory includes programs to modify the  history
  1692. database  as  well as some utilities that might be useful in
  1693. this task.  The database is called the _h_i_s_t_o_r_y file, and  it
  1694. contains  one line for every article on the system, specify-
  1695. ing when it was received and where it was filed.  This  file
  1696. is  indexed  by the Message-ID, and the DBZ package provides
  1697. fast retrieval from it.
  1698.  
  1699. _c_o_n_v_d_a_t_e       Converts between user-readable dates and  the
  1700.                format used in the history file.
  1701.  
  1702. _e_x_p_i_r_e         Scans  the  history  database  to  purge  old
  1703.                entries,  and  remove  old  articles from the
  1704.                spool area.  You can specify how long to keep
  1705.                sets of newsgroups.
  1706.  
  1707. _m_a_k_e_a_c_t_i_v_e     This program  can  be  used  to  rebuild  the
  1708.                _a_c_t_i_v_e file if it is lost in a crash.
  1709.  
  1710. _m_a_k_e_h_i_s_t_o_r_y    This program scans through the spool area and
  1711.  
  1712.  
  1713.  
  1714.                     February 14, 1992
  1715.  
  1716.  
  1717.  
  1718.  
  1719.  
  1720.                            - 27 -
  1721.  
  1722.  
  1723.                rebuilds the history files.
  1724.  
  1725. _n_e_w_s_r_e_q_u_e_u_e    This program can be used  after  a  crash  to
  1726.                resend articles to your neighbors.
  1727.  
  1728. _p_r_u_n_e_h_i_s_t_o_r_y   This is a tool for other programs that expire
  1729.                news.   It  reads  a list of Message-ID's and
  1730.                filenames, and updates the  history  file  to
  1731.                mark that the files have been deleted.
  1732.  
  1733.      This directory also includes _e_x_p_i_r_e._p_c_h  and  _r_e_a_p._p_c_h.
  1734. The  first is a patch to the C News expire program that lets
  1735. it cooperate better with  _i_n_n_d,  sending  it  messages  when
  1736. articles  have been removed.  The second is a set of patches
  1737. to the _r_e_a_p program that lets it  cooperate  with  _p_r_u_n_e_h_i_s_-
  1738. _t_o_r_y;  it  also adds some other useful features.  Both patch
  1739. files have additional information in  them.   Both  programs
  1740. are unsupported, provided by members of the beta-test group.
  1741.  
  1742.      To build these programs, type the following:
  1743.  
  1744.         cd $inn/expire
  1745.         make all
  1746.  
  1747.  
  1748.      If you are currently running C News, note that it has a
  1749. directory  named  _e_x_p_i_r_e  that is often the same pathname as
  1750. INN's _e_x_p_i_r_e program.  You will have to move, or remove, the
  1751. directory before you can intall the INN program.
  1752.  
  1753. _6._2._6.  _S_c_r_i_p_t _a_n_d _d_a_t_a _f_i_l_e_s
  1754.  
  1755.      In addition  to  the  programs,  INN  requires  several
  1756. scripts.  For example, one script starts the server when the
  1757. machine boots while another prunes the log  files  and  runs
  1758. _e_x_p_i_r_e every night.  Many of these scripts can be used as-is
  1759. until you get a feel for how INN works.
  1760.  
  1761.      INN also requires several data  files.   One  specifies
  1762. what  sites  feed you news, another what sites you feed, and
  1763. so on.  INN cannot provide these, other than  giving  sample
  1764. entries.  You'll probably find that writing these files will
  1765. be the hardest part of your installation.
  1766.  
  1767.      Prototypes for all these files are provided in the _s_a_m_-
  1768. _p_l_e_s  directory.   Your modified copies should be maintained
  1769. in the _s_i_t_e directory.  By splitting  things  up  this  way,
  1770. official  updates  will  never wipe out any changes you have
  1771. made.
  1772.  
  1773.      To create the initial set of files, do the following:
  1774.  
  1775.         cd $inn/site
  1776.         make all
  1777.  
  1778.  
  1779.  
  1780.                     February 14, 1992
  1781.  
  1782.  
  1783.  
  1784.  
  1785.  
  1786.                            - 28 -
  1787.  
  1788.  
  1789.      See below for an explanation of each file.
  1790.  
  1791. _6._3.  _M_a_n_u_a_l _p_a_g_e_s
  1792.  
  1793.      INN comes with an extensive set of manual  pages.   You
  1794. might  want  to edit the Makefile to set up the right owner-
  1795. ship of the installed manual pages.  Or you  might  want  to
  1796. not bother installing them at all.
  1797.  
  1798.      When it comes to reading them, you  should  start  with
  1799. _i_n_n_d._8   and   _c_t_l_i_n_n_d._8.   From  there  follow  the  cross-
  1800. references as you want.
  1801.  
  1802. _7.  _I_n_s_t_a_l_l_i_n_g _t_h_e _S_y_s_t_e_m
  1803.  
  1804.      Although either _i_n_n_d or _i_n_n_d_s_t_a_r_t must be run by  root,
  1805. most  of  the installation does not have to be done as root.
  1806. The $_i_n_n/_m_a_k_e_d_i_r_s._s_h script creates all the necessary direc-
  1807. tories  used  by  INN,  and sets up the right ownerships and
  1808. modes: owned by _N_E_W_S_U_S_E_R in group _N_E_W_S_G_R_O_U_P with  0775  per-
  1809. missions  (the  ``firewall''  directory,  __P_A_T_H__I_N_D_D_D_I_R, has
  1810. mode 0770).  You should review this script, then run it.
  1811.  
  1812.      The rest of the installation should be done as the news
  1813. administrator  or  as  root.   The Makefiles are very strict
  1814. about setting the modes on the files that get installed.  To
  1815. install the programs, do the following:
  1816.  
  1817.         cd $inn
  1818.         make update
  1819.  
  1820. This target does a ``make install'' in  all  program  direc-
  1821. tories.  It installs the programs and manpages, but does not
  1822. update or install any configuration files or scripts.   This
  1823. is  important:   in  any  directory (including the top-level
  1824. one), a ``make install'' will  install  everything  in  that
  1825. directory  into the right place.  A ``make update'' can only
  1826. be done in the top-level directory or in the _s_i_t_e directory,
  1827. and it only replaces scripts, not configuration files.  When
  1828. updating to a new INN release, you will probably want to  do
  1829. an  ``update''  first,  and then review the changed files by
  1830. doing ``make diff'' in the  _s_i_t_e  directory,  and  integrate
  1831. your  local  changes  as appropriate.  The Makefile also has
  1832. other targets that you might find useful,  so  the  comments
  1833. for  entries  like ``most'' and ``installed-diff', for exam-
  1834. ple.
  1835.  
  1836.      The next, and last, step is to build  your  INN  confi-
  1837. guration files and utility scripts.  If you have not already
  1838. done so, type the following:
  1839.  
  1840.         cd $inn/site
  1841.         make all
  1842.  
  1843.  
  1844.  
  1845.  
  1846.                     February 14, 1992
  1847.  
  1848.  
  1849.  
  1850.  
  1851.  
  1852.                            - 29 -
  1853.  
  1854.  
  1855. This will get copies of the scripts and files from the _b_a_c_k_-
  1856. _e_n_d_s  and  the  _s_a_m_p_l_e_s directories and run _s_u_b_s_t over them.
  1857. Whenever patches are issued, doing a _m_a_k_e in this  directory
  1858. will let you know what files have been updated, without des-
  1859. troying your local  changes.   The  _g_e_t_s_a_f_e._s_h  script  does
  1860. this.   If  you have either an _S_C_C_S or an _R_C_S directory then
  1861. _g_e_t_s_a_f_e._s_h will use the appropriate  source  control  system
  1862. for the files in this directory.
  1863.  
  1864.      The first set of files are used to carry out  the  con-
  1865. trol messages.  You might want to look them over; in partic-
  1866. ular, look at the table in _c_o_n_t_r_o_l._c_t_l and the newslog  man-
  1867. pages in _d_o_c.  The control files are:
  1868.  
  1869.         checkgroups    rmgroup
  1870.         control.ctl    sendme
  1871.         default        sendsys
  1872.         docheckgroups  senduuname
  1873.         ihave          version
  1874.         newgroup       writelog
  1875.         parsecontrol
  1876.  
  1877.  
  1878.      The following scripts are normally invoked by  _c_r_o_n  or
  1879. at system boot time, and should not require many changes:
  1880.  
  1881.         innlog.awk     scanlogs
  1882.         innstat        tally.control
  1883.         news.daily     tally.unwanted
  1884.         rc.news
  1885.  
  1886. _R_c._n_e_w_s starts the server.  _N_e_w_s._d_a_i_l_y  invokes  _e_x_p_i_r_e  and
  1887. _s_c_a_n_l_o_g_s.   _S_c_a_n_l_o_g_s  calls the other scripts to process the
  1888. logs.  You might want to review these scripts  just  to  see
  1889. what  they  do.  Do not get bogged down in the details, just
  1890. read the comments.  They  are  documented  in  the  manpages
  1891. news.daily(8) newslog(5), and newslog(8).
  1892.  
  1893.      There are some utility scripts to  send  news  to  your
  1894. news feeds:
  1895.  
  1896.         nntpsend       send-nntp
  1897.         nntpsend.ctl   send-uucp
  1898.         send-ihave     sendbatch
  1899.  
  1900. They flush and lock the batch file for the specified site(s)
  1901. and  then  call  _i_n_n_x_m_i_t  to send the articles to your down-
  1902. stream feeds.  _S_e_n_d-_i_h_a_v_e is used for ``ihave/sendme'' feeds
  1903. and  is  described  in an appendix.  _S_e_n_d_b_a_t_c_h and _s_e_n_d-_u_u_c_p
  1904. flush and lock batchfiles and call _b_a_t_c_h_e_r to queue up  UUCP
  1905. jobs.   You  might  want to modify these files to change the
  1906. flags given to _u_u_x; the default is to queue jobs up as grade
  1907. ``d.''  You will almost definitely have to edit them to make
  1908. sure that they properly parse the output of _d_f so that  your
  1909.  
  1910.  
  1911.  
  1912.                     February 14, 1992
  1913.  
  1914.  
  1915.  
  1916.  
  1917.  
  1918.                            - 30 -
  1919.  
  1920.  
  1921. spool  area  is  not overrun!  _N_n_t_p_s_e_n_d and _s_e_n_d-_n_n_t_p do the
  1922. same thing for NNTP feeds.  You must determine how you  want
  1923. to propagate your articles - the scripts give common ways of
  1924. getting the job done.
  1925.  
  1926.      The following files will have to be edited  to  contain
  1927. your  local  information.  They all have manual pages in the
  1928. _d_o_c directory that describe them:
  1929.  
  1930.         expire.ctl     newsfeeds
  1931.         hosts.nntp     nnrp.access
  1932.         inn.conf       passwd.nntp
  1933.         moderators
  1934.  
  1935.  
  1936.      The last group of files are utility scripts  you  might
  1937. find useful:
  1938.  
  1939.         ctlrun         makegroup
  1940.         inncheck       scanspool
  1941.         innwatch
  1942.  
  1943. _C_t_l_r_u_n reads all the  articles  filed  in  your  ``control''
  1944. newsgroup  and  calls the appropriate control message script
  1945. to parse them.  _I_n_n_c_h_e_c_k is a Perl script to check the  syn-
  1946. tax  and  permissions of an installed INN system.  _I_n_n_r_e_p_o_r_t
  1947. is an alternate way of summarizing the  server's  log  file.
  1948. It  is a Perl script.  _I_n_n_w_a_t_c_h is a shell script to monitor
  1949. the system and stop the server when you are running  low  on
  1950. disk   space  or  inodes;  it  could  be  run  out  of  your
  1951. __P_A_T_H__N_E_W_S_B_O_O_T script.  You might have to edit it to  under-
  1952. stand  your  _d_f  output format.  _M_a_k_e_g_r_o_u_p is a front-end to
  1953. _r_n_e_w_s that helps you write a control  message  to  create  a
  1954. newsgroup.   You should review this script because you might
  1955. have to change the way the output of  the  _d_a_t_e  command  is
  1956. parsed,  and  because  you  might  might  want to change the
  1957. default distribution.  _S_c_a_n_s_p_o_o_l is a Perl  script  to  make
  1958. sure  that  the  active  file and the contents of your spool
  1959. tree agree.
  1960.  
  1961.      Once you have made the necessary modifications  (and  I
  1962. admit  that  some  of this - especially the _n_e_w_s_f_e_e_d_s file -
  1963. will be difficult), you should type the following:
  1964.  
  1965.         make install
  1966.  
  1967. Make sure you have _r_c._n_e_w_s installed in the right place,  as
  1968. explained  in  the  ``Paths  to  common  programs'' section,
  1969. above.  You might find it useful to  read  the  ``First-Time
  1970. Usenet  or NNTP Installation'' appendix for help on navigat-
  1971. ing through the INN configuration files.
  1972.  
  1973.      There are now only  a  couple  more  things  to  check.
  1974. First,  make  sure  you  have  an  _a_c_t_i_v_e file and a _h_i_s_t_o_r_y
  1975.  
  1976.  
  1977.  
  1978.                     February 14, 1992
  1979.  
  1980.  
  1981.  
  1982.  
  1983.  
  1984.                            - 31 -
  1985.  
  1986.  
  1987. database!  The appendices explain how to convert your exist-
  1988. ing  files;  the  _B_U_I_L_D script will create new ones for you.
  1989. If you have Perl, run _i_n_n_c_h_e_c_k to make sure  that  you  have
  1990. the datafiles configured correctly.  The second is make sure
  1991. that you have correctly updated  your  _s_y_s_l_o_g._c_o_n_f  file  to
  1992. match the filenames and logging levels required by INN.  See
  1993. _s_y_s_l_o_g/_s_y_s_l_o_g._c_o_n_f for an example of what to do.
  1994.  
  1995.      Once you have done all of  this,  InterNetNews  is  now
  1996. installed, and ready to run - have fun!
  1997.  
  1998. _8.  _H_e_t_e_r_o_g_e_n_e_o_u_s _C_l_i_e_n_t _I_n_s_t_a_l_l_a_t_i_o_n_s
  1999.  
  2000.      The _i_n_e_w_s program is used by  user  newsreaders.   Pro-
  2001. grams  such  as _r_n (which call _P_n_e_w_s) prepare a news article
  2002. and feed it into _i_n_e_w_s.  _I_n_e_w_s validates the  news  headers,
  2003. adds  its  own,  and  feeds  the  article to the campus _i_n_n_d
  2004. server.  The _i_n_e_w_s that comes with INN is more  useful  then
  2005. the ``mini-inews'' that comes with the reference implementa-
  2006. tion.  You cannot run the standard B2.11 _i_n_e_w_s.  You can run
  2007. the  C  News _i_n_e_w_s, but only on client machines (i.e., those
  2008. with a $_N_E_W_S_C_T_L/_s_e_r_v_e_r file).  I recommend that you  install
  2009. INN's _i_n_e_w_s on all the clients in your campus.
  2010.  
  2011.      INN comes with a _M_a_k_e_I_n_e_w_s script to make it easier  to
  2012. build  and  install  _i_n_e_w_s on a wide variety of hosts.  This
  2013. script creates a directory  and  copies  all  the  necessary
  2014. files  (headers, sources, configuration files) into it.  The
  2015. script takes an optional argument,  which  should  name  the
  2016. client machine's architecture.  For example:
  2017.  
  2018.         cd $inn
  2019.         ./MakeInews sun3
  2020.  
  2021. will create an _i_n_e_w_s._s_u_n_3 directory.  You can  then  examine
  2022. the  Makefile in that directory, and build and install _i_n_e_w_s
  2023. on your Sun-3 clients.  This is easiest if the  client  NFS-
  2024. mounts the source directory - that way you can keep all your
  2025. _i_n_e_w_s sources in one place.
  2026.  
  2027.      _R_n_e_w_s only has to be available on the machine where you
  2028. run  UUCP (and perhaps a mail-news gateway).  If this is not
  2029. the same machine as where _i_n_n_d is running, then  the  _M_a_k_e_R_-
  2030. _n_e_w_s  script can be used in the same manner as the _M_a_k_e_I_n_e_w_s
  2031. script.
  2032.  
  2033. _9.  _K_n_o_w_n _P_r_o_b_l_e_m_s
  2034.  
  2035.      If you use NIS (formerly Yellow Pages)  on  SunOS,  you
  2036. will  need  to  add  a ``domainname'' entry to your _i_n_n._c_o_n_f
  2037. file if your hosts do  not  contain  fully-qualified  domain
  2038. names.   The  most common symptom of this is that _i_n_e_w_s will
  2039. fail because it cannot generate a Message-ID.  Another prob-
  2040. lem  with NIS is that reverse name lookups do not return the
  2041.  
  2042.  
  2043.  
  2044.                     February 14, 1992
  2045.  
  2046.  
  2047.  
  2048.  
  2049.  
  2050.                            - 32 -
  2051.  
  2052.  
  2053. fully-qualified domain name.  If you know that none of  your
  2054. local  clients  have  a  period in their name, you can use a
  2055. pattern like ``*[^.]*'' in your _n_n_r_p._a_c_c_e_s_s file.
  2056.  
  2057.      SunOS4.1.1 has a bug where _w_r_i_t_e(2) can  return  EINTR.
  2058. The most common symptom is the following fatal error message
  2059. from _i_n_n_d:
  2060.  
  2061.         Can't sync history, interrupted system call
  2062.  
  2063. This is Sun bug 1052649.  It is fixed  in  patch  100293-01.
  2064. According  to  the  release  manual, it is also fixed in all
  2065. releases of SunOS since 4.1.2.
  2066.  
  2067.      If you have _N_O_F_I_L_E__L_I_M_I_T set you should know  that  the
  2068. standard  I/O library in SunOS4.x has trouble with more than
  2069. 127 descriptors.  The most common symptom is  the  following
  2070. fatal error message from _i_n_n_d:
  2071.  
  2072.         can't fopen /usr/local/news/history, invalid argument
  2073.  
  2074. This occurs after doing a _c_t_l_i_n_n_d ``reload'' command.  For a
  2075. work-around,   reboot  your  server  instead  of  trying  to
  2076. ``reload.'' Another symptom is that _i_n_n_d will exit if you do
  2077. a  _c_t_l_i_n_n_d  ``flush''  command while the server is paused or
  2078. throttled.  This is Sun bug 1045141.  Sun does not  plan  to
  2079. fix it for any 4.x release.
  2080.  
  2081.      One site has reported the same  error  message  happens
  2082. after  doing a sequence of ``throttle'' and ``go'' commands.
  2083. It does not appear to be related to the bug mentioned above,
  2084. although  the  symptom is the same.  If you replace the body
  2085. of INN's _x_f_o_p_e_n_a routine with the following, it will work:
  2086.  
  2087.         return fopen(p, "a+");
  2088.  
  2089. This is in the file _l_i_b/_x_f_o_p_e_n_a._c.
  2090.  
  2091.      If you use Sun's unbundled compiler, _a_c_c, you must make
  2092. sure  to  use  the unbundled assembler, too.  You might also
  2093. get lots of  ``left  operand  must  be  modifiable  lvalue''
  2094. errors.  Setting _U_S_E__C_H_A_R__C_O_N_S_T to ``DONT'' will help.
  2095.  
  2096.      There have been reports that the VAX Ultrix 4.2  _m_a_l_l_o_c
  2097. doesn't  work  well  with _i_n_n_d, causing it to slowly fill up
  2098. all swap space.  I believe that all of the memory  leaks  in
  2099. _i_n_n_d  have been fixed, but you might want to look at using a
  2100. different _m_a_l_l_o_c package.  The Kingsley/Perl _m_a_l_l_o_c  package
  2101. is  provided  in  the  _l_i_b  directory.  Add ``malloc.c'' and
  2102. ``malloc.o'' to the MISSING_SRC  and  MISSING_OBJ  lines  in
  2103. _c_o_n_f_i_g._d_a_t_a and rebuild.
  2104.  
  2105.      I have been told that on SunSoft Interactive UNIX  Sys-
  2106. tem  V  Release  3.2  Version 3.0 systems <errno.h> has been
  2107.  
  2108.  
  2109.  
  2110.                     February 14, 1992
  2111.  
  2112.  
  2113.  
  2114.  
  2115.  
  2116.                            - 33 -
  2117.  
  2118.  
  2119. broken up into separate files.   The  easiest  way  to  work
  2120. around  this problem is to add ``#include <net/errno.h>'' to
  2121. _i_n_c_l_u_d_e/_c_l_i_b_r_a_r_y._h.
  2122.  
  2123.      If you use 386BSD (the Jolitz port, not the  BSDI  pro-
  2124. duct) you will have to set _A_C_T__S_T_Y_L_E to ``READ''.  If you do
  2125. not do this then the  active  file  will  not  get  updated.
  2126. Another  work-around  is  to insert an ``msync'' call in the
  2127. ICDwriteactive routine in _i_n_n_d/_i_c_d._c.  This is not supported
  2128. because I consider the 386BSD behavior to be buggy.
  2129.  
  2130.      The default configuration of some Sequent kernels  does
  2131. not  provide  enough descriptors for _i_n_n_d to run.  You might
  2132. have to rebuild your kernel with the  ``MAXNOFILE=128''  and
  2133. ``NOFILEEXT=64''  options.   You  will  also  have  to had a
  2134. ``setdtablesize(nnn)'' call in the main routine of _i_n_n_d, and
  2135. a ``setdtablesize(0)'' call in the Spawn routine.
  2136.  
  2137.      I have been told that some older versions  of  the  SCO
  2138. _o_p_e_n_d_i_r  routine  have  file  descriptor  leaks.   The  most
  2139. noticeable symptom is probably that _i_n_n_d will die while try-
  2140. ing  to  renumber  the _a_c_t_i_v_e file.  You might want to use a
  2141. freely-redistributable ``dirent'' package such as  one  dis-
  2142. tributed by the Free Software Foundation.
  2143.  
  2144.      On some SVR4 systems,  attempting  to  set  the  socket
  2145. buffer  size  is  either not supported or, even worse, might
  2146. result in _i_n_n_d's data size  growing.   The  most  noticeable
  2147. symptom is ``cant setsockopt(SNDBUF)'' messages in your _s_y_s_-
  2148. _l_o_g output.  To fix this, either comment out  the  calls  to
  2149. _s_e_t_s_o_c_k_o_p_t  in _i_n_n_d/_n_c._c or add ``-USO_SNDBUF'' to your _D_E_F_S
  2150. config parameter.
  2151.  
  2152.      I have heard that Sony SVR4 systems have lots of  prob-
  2153. lems.  You must set _H_A_V_E__U_N_I_X__D_O_M_A_I_N to ``DONT''; sockets in
  2154. general seem to have problems, including kernel crashes  and
  2155. a blocked _i_n_n_d.
  2156.  
  2157.      If you use the GNU _s_e_d in the  __P_A_T_H__S_E_D  configuration
  2158. parameter,  make sure you get version 1.13; earlier versions
  2159. have a bug that breaks the _p_a_r_s_e_c_o_n_t_r_o_l scripts.   The  most
  2160. noticeable symptom is that all ``newgroup'' control messages
  2161. result in mail saying that they are unparseable.
  2162.  
  2163.      Some versions of the shell in  HP-UX  do  not  properly
  2164. parse  a  quoted  ``[''  when  it is in a pattern for a _c_a_s_e
  2165. statement.  The most noticeable symptom is  that  _n_e_w_s._d_a_i_l_y
  2166. does  not properly expire articles if _i_n_n_w_a_t_c_h has throttled
  2167. the server.  Contact HP and get a fix for SR # 5003-009811.
  2168.  
  2169.      On some versions of AIX on the RS/6000,  using  memory-
  2170. mapping  can eat up all the page space or crash the machine.
  2171. This will  be  noticeable  if  you  have  _A_C_T__S_T_Y_L_E  set  to
  2172. ``MMAP''  and/or have ``-DMMAP'' in _D_B_Z_C_F_L_A_G_S.  Ask your IBM
  2173.  
  2174.  
  2175.  
  2176.                     February 14, 1992
  2177.  
  2178.  
  2179.  
  2180.  
  2181.  
  2182.                            - 34 -
  2183.  
  2184.  
  2185. representative for the ``U413090'' PTF and prerequisites  to
  2186. apply it; it is believed that this will fix it.
  2187.  
  2188.  
  2189.  
  2190.  
  2191.  
  2192.  
  2193.  
  2194.  
  2195.  
  2196.  
  2197.  
  2198.  
  2199.  
  2200.  
  2201.  
  2202.  
  2203.  
  2204.  
  2205.  
  2206.  
  2207.  
  2208.  
  2209.  
  2210.  
  2211.  
  2212.  
  2213.  
  2214.  
  2215.  
  2216.  
  2217.  
  2218.  
  2219.  
  2220.  
  2221.  
  2222.  
  2223.  
  2224.  
  2225.  
  2226.  
  2227.  
  2228.  
  2229.  
  2230.  
  2231.  
  2232.  
  2233.  
  2234.  
  2235.  
  2236.  
  2237.  
  2238.  
  2239.  
  2240.  
  2241.  
  2242.                     February 14, 1992
  2243.  
  2244.  
  2245.  
  2246.  
  2247.  
  2248.                            - 35 -
  2249.  
  2250.  
  2251. _A_p_p_e_n_d_i_x _I:  _D_i_f_f_e_r_e_n_c_e_s _f_r_o_m _o_t_h_e_r _N_e_w_s _s_o_f_t_w_a_r_e
  2252.  
  2253.      Administrators will find that INN is fairly  incompati-
  2254. ble  with  B  and C News.  This section tries to mention the
  2255. most important places where INN differs from the other  news
  2256. systems.  If you have not maintained B or C News, you should
  2257. probably skip this section.
  2258.  
  2259.      Users will generally only notice is that INN is faster;
  2260. it  should  be 100% compatible with the other systems at the
  2261. user level.  If you had particular problems that aren't men-
  2262. tioned  here,  please let me know.  Note, however, that this
  2263. is _n_o_t a tutorial on how to set up a new INN system, or con-
  2264. vert older software to it; no such document exists.
  2265.  
  2266. _1.  _C_o_n_f_i_g_u_r_a_t_i_o_n _F_i_l_e_s
  2267.  
  2268.      Below is a list of the data files used by B and C News,
  2269. and  the  reference  NNTP implementation, along with a short
  2270. summary of how they map into INN configuration  files.   The
  2271. syntax  is  always  different: INN files are almost always a
  2272. set of colon-separated fields where lines beginning  with  a
  2273. poundsign are ignored.
  2274.  
  2275. _e_x_p_l_i_s_t        This is replaced by  the  similar  _e_x_p_i_r_e._c_t_l
  2276.                file.   Archiving  is done by a separate pro-
  2277.                gram.
  2278.  
  2279. _m_a_i_l_p_a_t_h_s      This is replaced by the _m_o_d_e_r_a_t_o_r_s file.  The
  2280.                ``default'' entry in _m_a_i_l_p_a_t_h_s is replaced by
  2281.                either a full wildcard (``*'') entry  in  the
  2282.                _m_o_d_e_r_a_t_o_r_s  file, or by a ``moderatormailer''
  2283.                entry in the _i_n_n._c_o_n_f file.
  2284.  
  2285. _n_n_t_p._a_c_c_e_s_s    This is replaced by the _h_o_s_t_s._n_n_t_p (for  NNTP
  2286.                peers)   and  _n_n_r_p._a_c_c_e_s_s  (for  newsreading)
  2287.                files.
  2288.  
  2289. _n_n_t_p._s_y_s       This is a password file used if NNTP is  com-
  2290.                piled   with  the  ``AUTH''  option.   It  is
  2291.                replaced by the _p_a_s_s_w_d._n_n_t_p file.  Note  that
  2292.                _i_n_e_w_s   and  _r_n_e_w_s  will  also  try  to  read
  2293.                _p_a_s_s_w_d._n_n_t_p.  Therefore,  you  will  probably
  2294.                want to have one-line versions of it for your
  2295.                on-campus clients.
  2296.  
  2297. _o_r_g_a_n_i_z_a_t_i_o_n   This  is  replaced  by  the  ``organization''
  2298.                entry in the _i_n_n._c_o_n_f file.
  2299.  
  2300. _r_n/_s_e_r_v_e_r      This is replaced by the ``server''  entry  in
  2301.                the _i_n_n._c_o_n_f file.
  2302.  
  2303. _w_h_o_a_m_i         This is  replaced  by  the  ``pathhost''  and
  2304.                ``fromhost'' entries in the _i_n_n._c_o_n_f file.
  2305.  
  2306.  
  2307.  
  2308.                     February 14, 1992
  2309.  
  2310.  
  2311.  
  2312.  
  2313.  
  2314.                            - 36 -
  2315.  
  2316.  
  2317. _2.  _N_e_w_s_g_r_o_u_p_s, _A_c_t_i_v_e, _S_y_s, _a_n_d _N_e_w_s_f_e_e_d_s
  2318.  
  2319.      The biggest difference is how the _n_e_w_s_f_e_e_d_s  file  com-
  2320. pares   with   the   _s_y_s   file.   Newsgroup  patterns  like
  2321. ``all.all.ctl'' are completely gone.  All newsgroup patterns
  2322. are shell-style wildcards, matched against the _a_c_t_i_v_e file.
  2323.  
  2324.      The _a_c_t_i_v_e file is taken to be the definitive  list  of
  2325. newsgroups  that you want to receive.  With B and C news, an
  2326. article must match the subscription list of the  local  site
  2327. as specified in the _s_y_s file.  If it matches, each newsgroup
  2328. is then looked up in the _a_c_t_i_v_e file.  If none of the  news-
  2329. groups  are  found, then the article is filed into the news-
  2330. group named ``junk''.
  2331.  
  2332.      INN's behavior is much simpler.  If  a  newsgroup  does
  2333. not  appear  in  the _a_c_t_i_v_e file, it is ignored.  If none of
  2334. the groups are mentioned,  then  the  article  is  rejected:
  2335. nothing  is  written  to  disk.  This is a deliberate design
  2336. decision:  if you do not want a particular newsgroup to take
  2337. up  your disk space, remove it from the _a_c_t_i_v_e file; if your
  2338. neighbors have not gotten around to updating your  newsfeed,
  2339. then  the  only  thing that will happen is that some network
  2340. bandwidth will have been wasted when they send you the arti-
  2341. cle.
  2342.  
  2343.      You can change INN's behavior so that it resembles  the
  2344. other  systems.   To  do this, compile with _W_A_N_T__J_U_N_K set to
  2345. ``DO.'' Note that  this  will  accept  _e_v_e_r_y_t_h_i_n_g.   Because
  2346. there  is no subscription list, you cannot say ``give me all
  2347. of the foo hierarchy (filed into  junk),  but  not  the  alt
  2348. hierarchy.'' You must list the group in the _a_c_t_i_v_e file.
  2349.  
  2350.      INN strictly believes in distributions.   If  the  site
  2351. named  _M_E has any distributions, then incoming articles must
  2352. either have no Distribution header, or the header must match
  2353. the  distribution  list.   If you want to blindly accept all
  2354. distributions, make sure you do not have a  ``/distrib,...''
  2355. section in your _M_E entry.  Distributions are fixed strings -
  2356. there are no patterns or special wildcards like ``all.''
  2357.  
  2358.      For more details on these items, see _d_o_c/_n_e_w_s_f_e_e_d_s._5.
  2359.  
  2360. _3.  _C_o_n_t_r_o_l _M_e_s_s_a_g_e_s
  2361.  
  2362.      Like C News, INN implements all control messages  other
  2363. than cancel as shell scripts.  The number and type of param-
  2364. eters is different from that of C News.   All  control  mes-
  2365. sages consult the file _c_o_n_t_r_o_l._c_t_l before acting on the mes-
  2366. sage.  If the sender's address  matches  with  the  list  of
  2367. authorized  addresses  (e.g.,  ``tale@uunet.uu.net'', ``*'',
  2368. etc.), the control message is either acted upon,  mailed  to
  2369. the  news  administrator,  or logged.  For example, messages
  2370. from  ``tale@uunet.uu.net''  (the   current   moderator   of
  2371.  
  2372.  
  2373.  
  2374.                     February 14, 1992
  2375.  
  2376.  
  2377.  
  2378.  
  2379.  
  2380.                            - 37 -
  2381.  
  2382.  
  2383. news.announce.newgroups) are honored.
  2384.  
  2385.      The ``control'', ``junk'', and ``to'' newsgroups can be
  2386. explicitly  sent  or  not  sent.   See  _d_o_c/_n_e_w_s_f_e_e_d_s._5  and
  2387. _d_o_c/_i_n_n_d._8.
  2388.  
  2389.      The _c_t_l_i_n_n_d program is what really directs  the  server
  2390. to  create  or  remove  newsgroups.  This results in a semi-
  2391. recursive process:   the  control  message  arrives,  and  a
  2392. script  is invoked to process the message.  If approved, the
  2393. script invokes _c_t_l_i_n_n_d to send a message back to the  server
  2394. telling it to create or remove the group.
  2395.  
  2396. _4.  _L_o_c_k_i_n_g
  2397.  
  2398.      A running news system has many open files.  These files
  2399. can  be  divided  into two groups.  The first group includes
  2400. the history database and  _a_c_t_i_v_e  file.   The  second  group
  2401. includes  the logfiles and batch files used to send articles
  2402. to your feeds.
  2403.  
  2404.      B news uses an internal protocol for the  first  group.
  2405. For  the  second group, since _i_n_e_w_s does ``atomic appends,''
  2406. no locking is necessary.   C  news  uses  the  _l_o_c_k_n_e_w_s  and
  2407. _n_e_w_s_l_o_c_k  scripts for the first group, and provides no fine-
  2408. grain mechanism for the second group.
  2409.  
  2410.      With INN, the server is running all the  time  and  all
  2411. locking  is  done under the direction of _c_t_l_i_n_n_d.  The first
  2412. group  is  generally  handled  by  using  the  ``throttle,''
  2413. ``pause,'' and ``go'' commands (sometimes ``reload'' will be
  2414. necessary).  The second group is  handled  by  the  ``flush-
  2415. logs''  and  ``flush'' commands.  See the _d_o_c/_c_t_l_i_n_n_d._8 man-
  2416. page; examples of their use can be found in various  scripts
  2417. in the _s_a_m_p_l_e_s directory.
  2418.  
  2419.  
  2420.  
  2421.  
  2422.  
  2423.  
  2424.  
  2425.  
  2426.  
  2427.  
  2428.  
  2429.  
  2430.  
  2431.  
  2432.  
  2433.  
  2434.  
  2435.  
  2436.  
  2437.  
  2438.  
  2439.  
  2440.                     February 14, 1992
  2441.  
  2442.  
  2443.  
  2444.  
  2445.  
  2446.                            - 38 -
  2447.  
  2448.  
  2449. _A_p_p_e_n_d_i_x _I_I:  _C_o_n_v_e_r_t_i_n_g _f_r_o_m _o_t_h_e_r _N_e_w_s _s_o_f_t_w_a_r_e
  2450.  
  2451.      INN is a complete news transport and expiration system.
  2452. Since  few  people will be installing INN from scratch, this
  2453. section should help you determine what you can ``throw out''
  2454. from  your  earlier news setups.  It is also compatible with
  2455. much of the existing news software,  so  you  can  create  a
  2456. mixed environment if you want to, and if you are careful.
  2457.  
  2458. _1.  _C _N_e_w_s _E_x_p_i_r_e
  2459.  
  2460.      The _e_x_p_i_r_e program that is distributed  with  INN  does
  2461. not do any archiving.  Since the history databases currently
  2462. have the same format, it is  possible  to  use  the  C  News
  2463. _e_x_p_i_r_e  if  you  want  to.   (The  INN  history database may
  2464. change, however, so you should only do this  if  you  really
  2465. have  to  -  you  really should use INN's _e_x_p_i_r_e.) There are
  2466. three ways to do this.
  2467.  
  2468.      The first way is to change your _d_o_e_x_p_i_r_e script so that
  2469. it  calls  _c_t_l_i_n_n_d  to  ``throttle'' _i_n_n_d just before _e_x_p_i_r_e
  2470. runs.  It should then issue a _c_t_l_i_n_n_d ``go''  command  after
  2471. _e_x_p_i_r_e  is  done.   The  drawback  to this method is that no
  2472. incoming news is accepted until all expiration is finished.
  2473.  
  2474.      The second way is to compile _l_i_b/_l_o_c_k._c and add  it  to
  2475. your  C News library _l_i_b_c_n_e_w_s._a, replacing the provided lock
  2476. functions.  You should then remove  _e_x_p_i_r_e  and  relink  it.
  2477. This  method  has not been tested very thoroughly, but it is
  2478. rather simple.
  2479.  
  2480.      The third way is to teach the C News _e_x_p_i_r_e to talk  to
  2481. _i_n_n_d  and  tell  it to cancel articles that it would remove.
  2482. To do this, apply the patch file _e_x_p_i_r_e/_e_x_p_i_r_e._p_c_h to your C
  2483. News   _e_x_p_i_r_e._c   sources.    You  will  also  have  to  add
  2484. _l_i_b/_i_n_n_d_c_o_m_m._o to _l_i_b_c_n_e_w_s._a and then rebuild _e_x_p_i_r_e.
  2485.  
  2486. _2.  _S_t_a_n_d_a_r_d _N_N_T_P _d_a_e_m_o_n
  2487.  
  2488.      You can use the ``standard'' _n_n_t_p_d server.  You  should
  2489. only  have  to do this if you have hosts that feed you news,
  2490. and where the users on that machine also want to  read  news
  2491. on your machine.
  2492.  
  2493.      Make sure that you configure _n_n_t_p_d so that it is  using
  2494. DBZ,  and  have  it  feed  each individual article to _i_n_e_w_s;
  2495. don't use the ``batched input'' option.  It should  also  be
  2496. set up so that it acts as if it is running under _i_n_e_t_d.  You
  2497. should also make sure that _i_n_e_t_d does nothing with the  NNTP
  2498. port, number 119.
  2499.  
  2500. _3.  _N_N_T_P-_b_a_s_e_d _n_e_w_s_r_e_a_d_e_r_s
  2501.  
  2502.      If  you  already  have  your   NNTP-using   newsreaders
  2503.  
  2504.  
  2505.  
  2506.                     February 14, 1992
  2507.  
  2508.  
  2509.  
  2510.  
  2511.  
  2512.                            - 39 -
  2513.  
  2514.  
  2515. installed and running, you do not have to do anything.  This
  2516. includes _x_v_n_e_w_s, _x_r_n, _r_r_n and so  on.   INN  implements  the
  2517. standard  NNTP protocol, with some extensions.  INN does not
  2518. provide the extensions used  by  _t_r_n,  _t_i_n  or  other  news-
  2519. readers.   (You  can enable the _t_r_n ``XTHREADS'' by modifing
  2520. _n_n_r_p_d/_n_n_r_p_d._h;    change    the    ``DONT_DO_XTHREAD''    to
  2521. ``DO_DO_XTHREAD''  and  verify the other macros in that sec-
  2522. tion.  INN will not implement  all  the  different  indexing
  2523. systems  because  the  right  solution  is to have a generic
  2524. interface that all readers can use.)
  2525.  
  2526.      For administrative convenience, however, you might wish
  2527. to  have all your newsreaders use the INN library and confi-
  2528. guration files to talk to  the  server.   The  next  section
  2529. describes how to do that for _r_n.  It is provided as an exam-
  2530. ple, to help you convert other programs you might have.  INN
  2531. does not provide, nor fully support, any newsreaders.
  2532.  
  2533. _4.  _R_e_m_o_t_e _r_n
  2534.  
  2535.      The ``remote'' version of _r_n (also called _r_r_n)  uses  a
  2536. set  of  routines  in  the NNTP ``clientlib'' file.  INN can
  2537. emulate these routines; see _d_o_c/_c_l_i_e_n_t_l_i_b._3.  If you need to
  2538. build  _r_n for client machines that don't have the entire INN
  2539. distribution available, use the _M_a_k_e_L_i_b script  to  build  a
  2540. distribution  directory of the necessary routines.  Use this
  2541. script the same way you use the _M_a_k_e_I_n_e_w_s script.
  2542.  
  2543.      _R_n, _r_r_n, and _t_r_n are moving targets so  these  instruc-
  2544. tions  may  be  out of date.  The maintainers have agreed to
  2545. officially support INN, however, which is a good thing.
  2546.  
  2547.      There are two ways to build _r_n so that it uses the  INN
  2548. library.   If you don't have the NNTP distribution installed
  2549. you will have to use the first way.
  2550.  
  2551.      The first way is to apply a patch to the latest _r_n _C_o_n_-
  2552. _f_i_g_u_r_e  script  and then execute it and rebuild the program.
  2553. To do this, type the following:
  2554.  
  2555.         cd _r_n__s_o_u_r_c_e
  2556.         patch <$inn/frontends/rn.pch
  2557.         ./Configure
  2558.         make
  2559.  
  2560. At some point, _C_o_n_f_i_g_u_r_e will ask you if you want to use the
  2561. InterNetNews  library;  answer _y_e_s.  You can then use either
  2562. the full sources, or a special library  that  contains  just
  2563. the  needed  header  and  sources files.  Tell _C_o_n_f_i_g_u_r_e the
  2564. appropriate pathnames, and then proceed with the rest of the
  2565. _r_n installation.
  2566.  
  2567.      The second way is to edit a couple of files  after  you
  2568. have  run  _C_o_n_f_i_g_u_r_e  and  set it up to build the remote rn.
  2569.  
  2570.  
  2571.  
  2572.                     February 14, 1992
  2573.  
  2574.  
  2575.  
  2576.  
  2577.  
  2578.                            - 40 -
  2579.  
  2580.  
  2581. First, replace the  _r_n  file  _s_e_r_v_e_r._h  with  the  INN  file
  2582. _i_n_c_l_u_d_e/_m_y_s_e_r_v_e_r._h.   The  next  step  is  to  edit  the  _r_n
  2583. Makefile to remove the ``clientlib'' file  from  the  source
  2584. and  object  file  lists.  This can probably be done by com-
  2585. menting out the definitions of the _c_5  and  _o_b_j_5  variables.
  2586. You  must  also  edit the Makefile to add the INN library to
  2587. the list of libraries that are linked in.  This can probably
  2588. be  done  by editing the line that defines the _l_i_b_s variable
  2589. so that the full pathname to  _l_i_b_i_n_n._a  is  the  first  item
  2590. after the equal sign.
  2591.  
  2592. _5.  _R_e_m_o_v_i_n_g _t_h_e _O_t_h_e_r _S_t_u_f_f
  2593.  
  2594.      The names  below  assume  a  ``standard''  news  setup;
  2595. things  might be different on your machine.  Also, many pro-
  2596. grams have alternate names and links; make  sure  you  chase
  2597. down and remove all of them.
  2598.  
  2599.      You might find it easiest to rename your  /_u_s_r/_l_i_b/_n_e_w_s
  2600. (and  /_u_s_r/_l_i_b/_n_e_w_s_b_i_n)  directories  to  something else and
  2601. start with a clean slate, copying over the files as they are
  2602. needed.   Make  sure that your news processing is completely
  2603. stopped before you begin this process.   That  includes  any
  2604. _c_r_o_n jobs that may be running.
  2605.  
  2606.      The /_u_s_r/_l_i_b/_n_e_w_s  directory  can  become  cluttered  -
  2607. that's  why  C News split everything up into separate direc-
  2608. tories.  The following files are compatible with C News  and
  2609. B2.11 News, and should be _k_e_p_t:
  2610.  
  2611.         active         active.times
  2612.  
  2613. If you are running C News keep these files, otherwise delete
  2614. them and use _m_a_k_e_h_i_s_t_o_r_y to rebuild them:
  2615.  
  2616.         history
  2617.         history.dir
  2618.         history.pag
  2619.  
  2620.  
  2621.      _R_n does not have to be modified so leave this directory
  2622. alone (or copy it back if you moved your original):
  2623.  
  2624.         /usr/local/lib/rn
  2625.  
  2626. If you set up _r_n to use the INN library, remove this file:
  2627.  
  2628.         /usr/local/lib/rn/server
  2629.  
  2630.  
  2631.      The input system is completely  replaced.   Remove  the
  2632. following programs and their manpages:
  2633.  
  2634.  
  2635.  
  2636.  
  2637.  
  2638.                     February 14, 1992
  2639.  
  2640.  
  2641.  
  2642.  
  2643.  
  2644.                            - 41 -
  2645.  
  2646.  
  2647.  
  2648.         /bin/cunbatch
  2649.         /bin/inews, /usr/lib/news/inews, etc...
  2650.         /bin/rnews, /usr/bin/rnews, etc...
  2651.         /usr/lib/news/rnews.stall
  2652.         /etc/nntpd, /usr/etc/nntpd, etc...
  2653.  
  2654. Also remove the following directories and everything  within
  2655. them:
  2656.  
  2657.         /usr/lib/news/bin/input
  2658.         /usr/lib/news/bin/relay
  2659.         /usr/lib/news/bin/ctl
  2660.         /usr/lib/news/bin/inject
  2661.         /usr/lib/news/nntp (mkgrdates, nntp_access, shlock, etc)
  2662.  
  2663.  
  2664.      The transmission facility is completely replaced.   You
  2665. may  keep your current feed subsystem if you want to, but it
  2666. will require some changes to make sure that  batchfiles  are
  2667. properly  flushed;  see  the  _s_e_n_d-_x_x_x scripts for examples.
  2668. Remove these files and programs:
  2669.  
  2670.         /usr/lib/news/batchparms
  2671.         /usr/man/man8/newsbatch.8
  2672.  
  2673. Remove the following directory and everything within it:
  2674.  
  2675.         /usr/lib/news/bin/batch
  2676.  
  2677. You can continue to use _n_n_t_p_l_i_n_k, _n_e_w_s_x_d, and the like, sub-
  2678. ject to the caveat just mentioned.
  2679.  
  2680.      Article expiration and maintenance of the  history  and
  2681. active files is completely replaced.  Remove this file:
  2682.  
  2683.         /usr/lib/news/explist
  2684.  
  2685. Remove the following directories and everything within them:
  2686.  
  2687.         /usr/lib/news/bin/expire
  2688.         /usr/lib/news/bin/maint
  2689.  
  2690. If you do not remove the _e_x_p_i_r_e directory, you will probably
  2691. have  problems  installing  INN's _e_x_p_i_r_e, which is a program
  2692. that often has the same name as the C News directory.
  2693.  
  2694.      The following  programs  in  /_u_s_r/_l_i_b/_n_e_w_s_b_i_n  are  not
  2695. needed and can be deleted.  Keeping them around is harmless,
  2696. and if you find them useful don't delete them:
  2697.  
  2698.  
  2699.  
  2700.  
  2701.  
  2702.  
  2703.  
  2704.                     February 14, 1992
  2705.  
  2706.  
  2707.  
  2708.  
  2709.  
  2710.                            - 42 -
  2711.  
  2712.  
  2713.  
  2714.         canonhdr       newshostname
  2715.         ctime          newslock
  2716.         dbz            queuelen
  2717.         getabsdate     sizeof
  2718.         getdate        spacefor
  2719.         gngp
  2720.  
  2721. Note that _c_t_i_m_e, _g_e_t_a_b_s_d_a_t_e, and  _g_e_t_d_a_t_e  are  replaced  by
  2722. _c_o_n_v_d_a_t_e.  More importantly, _n_e_w_s_l_o_c_k does not lock _i_n_n_d; it
  2723. is best to remove it.
  2724.  
  2725.      The following files are replaced by  INN  configuration
  2726. files.  You should delete them, just to avoid confusion:
  2727.  
  2728.         mailname       sys
  2729.         mailpaths      whoami
  2730.         organization
  2731.  
  2732. If you have other software that uses them (except _s_y_s),  you
  2733. can  keep them.  The following will be rebuilt (or overwrit-
  2734. ten) by _i_n_n_d and _s_c_a_n_l_o_g_s so you should remove them:
  2735.  
  2736.         errlog         log
  2737.  
  2738.  
  2739.      In addition to the manpages  for  the  programs  listed
  2740. above, the following manual pages should be removed:
  2741.  
  2742.         active.times.5 newsmail.8
  2743.         expire.8       newsmaint.8
  2744.         mkgrdates.8c   nntpd.8c
  2745.         news.5         nntpxmit.1
  2746.         newsaux.8
  2747.  
  2748.  
  2749.      Any other files and directories can  probably  also  be
  2750. discarded.
  2751.  
  2752.  
  2753.  
  2754.  
  2755.  
  2756.  
  2757.  
  2758.  
  2759.  
  2760.  
  2761.  
  2762.  
  2763.  
  2764.  
  2765.  
  2766.  
  2767.  
  2768.  
  2769.  
  2770.                     February 14, 1992
  2771.  
  2772.  
  2773.  
  2774.  
  2775.  
  2776.                            - 43 -
  2777.  
  2778.  
  2779. _A_p_p_e_n_d_i_x _I_I_I:  _S_e_t_t_i_n_g _u_p _d_i_f_f_e_r_e_n_t _f_e_e_d_s
  2780.  
  2781.      This section gives some notes and advice on how to  set
  2782. up  different  types  of outgoing news feeds.  It duplicates
  2783. and expands upon the information in the manual pages.
  2784.  
  2785. _1.  _I_h_a_v_e/_s_e_n_d_m_e _f_e_e_d
  2786.  
  2787.      For a standard UUCP newsfeed, a site batches up all the
  2788. articles  it receives and sends them to the downstream site,
  2789. which unpacks the batch and processes each article.  If  the
  2790. downstream  site  has multiple feeds, however, it might want
  2791. to ``filter'' the articles that get sent.  This is  done  by
  2792. having  the  feeding  site send a list of Message-ID's as an
  2793. ``ihave'' control message.  The receiving site examines  the
  2794. list  to  see which articles it does not currently have, and
  2795. sends it back to the upstream site as a ``sendme''  message.
  2796. The original site receives this message and prepares a batch
  2797. in the standard way.
  2798.  
  2799.      Note that this has nothing to do with NNTP.   It  is  a
  2800. specialized  type  of  batched  feed  that  is not used very
  2801. often.  To do ihave/sendme with a  site  named  remote,  the
  2802. local  site must either have a ``to.remote'' newsgroup or be
  2803. compiled with MERGE_TO_GROUPS set to ``DO''
  2804.  
  2805.      Accepting an ihave/sendme feed  is  easy.   Suppose  an
  2806. ``ihave''  message  is  received  from  a site named remote.
  2807. When _i_n_n_d processes the message it will invoke the appropri-
  2808. ate  control script, /_u_s_r/_l_o_c_a_l/_n_e_w_s/_b_i_n/_c_o_n_t_r_o_l/_i_h_a_v_e.  The
  2809. script will filter the body using  _g_r_e_p_h_i_s_t_o_r_y,  creating  a
  2810. list  of Message-ID's not found in the _h_i_s_t_o_r_y database.  It
  2811. uses this output to  create  a  ``sendme''  control  article
  2812. which  is posted to the ``to.remote'' newsgroup using _i_n_e_w_s.
  2813. This article will then be queued and sent to remote  in  the
  2814. normal  way.   The  remote  site  will then send the desired
  2815. articles back.
  2816.  
  2817.      Providing an ihave/sendme feed is a  bit  more  compli-
  2818. cated.  First, you must create two entries in your _n_e_w_s_f_e_e_d_s
  2819. file.  The first should be named remote.ihave.  Make this  a
  2820. ``Tf,Wm'' feed that contains the remote's subscription list.
  2821. This  entry  results  in  a  a  file  that  accumulates  the
  2822. Message-ID's  of  all  articles that remote might want.  The
  2823. other entry should  be  named  remote.   This  should  be  a
  2824. ``Tf,Wn''  feed  that  only  subscribes to the ``to.remote''
  2825. newsgroup.  (Actually, if you feed some groups as a standard
  2826. feed,  you can put them on the remote entry, rather then the
  2827. remote.ihave entry.)
  2828.  
  2829.      The next step is to have the ``ihave'' control messages
  2830. sent out.  To do this, review the _s_e_n_d-_i_h_a_v_e script and make
  2831. sure it is invoked as needed  (usually  out  of  _c_r_o_n).   It
  2832. splits  the  batchfile from the remote.ihave _n_e_w_s_f_e_e_d_s entry
  2833.  
  2834.  
  2835.  
  2836.                     February 14, 1992
  2837.  
  2838.  
  2839.  
  2840.  
  2841.  
  2842.                            - 44 -
  2843.  
  2844.  
  2845. and posts ``ihave'' control messages into the  ``to.remote''
  2846. newsgroup.   These  messages  will get queued for the remote
  2847. entry.
  2848.  
  2849.      The next step is to send out any  articles  queued  for
  2850. the  remote  entry.   Treat  this  as  a standard UUCP feed,
  2851. invoking _s_e_n_d-_u_u_c_p or _s_e_n_d_b_a_t_c_h as appropriate, typically  a
  2852. few minutes after _s_e_n_d-_i_h_a_v_e runs.
  2853.  
  2854.      When the remote site receives the ``ihave'' message  it
  2855. will filter it and send back a ``sendme'' message whose body
  2856. is the list of desired Message-ID's.   When  _i_n_n_d  processes
  2857. this  message it will invoke the appropriate control script,
  2858. /_u_s_r/_l_o_c_a_l/_n_e_w_s/_b_i_n/_c_o_n_t_r_o_l/_s_e_n_d_m_e.  This script  will  call
  2859. _g_r_e_p_h_i_s_t_o_r_y  to  turn the list into a list of files appended
  2860. to the batchfile  for  remote.   Examine  this  script  (the
  2861. filename  should  probably  match the filename in the remote
  2862. _n_e_w_s_f_e_e_d_s entry) and send  the  batch  to  the  remote  site
  2863. (using _b_a_t_c_h_e_r, often called by _s_e_n_d-_u_u_c_p or _s_e_n_d_b_a_t_c_h).
  2864.  
  2865. _2.  _F_e_e_d_i_n_g _a _l_a_r_g_e _n_u_m_b_e_r _o_f _s_i_t_e_s
  2866.  
  2867.      _I_n_n_d tries to keep as many batchfiles open for as  long
  2868. as possible.  It will normally open as many as it can, using
  2869. all the available  descriptors  minus  a  fixed  number  for
  2870. internal  use (log files, etc.).  You can explicitly set the
  2871. number of files to open by using the ``-o'' flag.
  2872.  
  2873.      If you have more outgoing feeds than available descrip-
  2874. tors,  _i_n_n_d  will  recycle the files on a a ``least recently
  2875. used'' basis.  If most of your feeds get most  articles  (or
  2876. you have vastly more feeds then available descriptors), this
  2877. will lead to ``file thrashing,'' closing and opening all the
  2878. excess  feeds on each article.  To reduce this, you can have
  2879. _i_n_n_d use an internal buffer for a site by  using  the  ``I''
  2880. parameter  in  the  _n_e_w_s_f_e_e_d_s file.  If a site does not have
  2881. its batchfile open, the server will not try to open it until
  2882. there  is  more  data  to  be  written  then will fit in the
  2883. buffer.  For example, suppose _i_n_n_d was started with ``-o10''
  2884. and there are 12 sites, all with ``I512'' in their _n_e_w_s_f_e_e_d_s
  2885. entry.  If each article generates 50 bytes (a pathname and a
  2886. Message-ID), then _i_n_n_d will close and re-assign two descrip-
  2887. tors every 10 or so articles.
  2888.  
  2889.      A better alternative is to use funnels and an exploder.
  2890. Funnels, specified in the _n_e_w_s_f_e_e_d_s file, let multiple sites
  2891. send their output down a single stream.   The  advantage  of
  2892. funnels  is  that  this stream can be a channel; the primary
  2893. disadvantage is that the funnel specifies what data is to be
  2894. written,  not  the individual sites.  (Since most feeds will
  2895. want either ``Wn'' or ``Wnm'' entries, this is usually not a
  2896. problem.)
  2897.  
  2898.      In order for the funnel output to be useful, it usually
  2899.  
  2900.  
  2901.  
  2902.                     February 14, 1992
  2903.  
  2904.  
  2905.  
  2906.  
  2907.  
  2908.                            - 45 -
  2909.  
  2910.  
  2911. must  be  split  into individual, per-site, files.  Programs
  2912. that do this type of splitting are called ``exploders.'' INN
  2913. provides two exploders, _f_i_l_e_c_h_a_n and _b_u_f_f_c_h_a_n.
  2914.  
  2915.      _F_i_l_e_c_h_a_n  is  the  simplest,  and   most   inefficient,
  2916. exploder.   It  does  not  keep  any  files open and is very
  2917. system-call intensive.  It can be used to  provide  behavior
  2918. (and  performance!) that is similar to B2.11 _i_n_e_w_s.  It can,
  2919. however, be used as the funnel for an  unlimited  number  of
  2920. sites.
  2921.  
  2922.      _B_u_f_f_c_h_a_n keeps all its output files open all the  time.
  2923. It  should  not be used for more sites then a single process
  2924. can have open.  _B_u_f_f_c_h_a_n also  has  flags  to  automatically
  2925. flush  its  files,  as well as close and re-open them, every
  2926. specified number of articles.  (The  re-open  capability  is
  2927. useful  for  things  like _n_n_t_p_l_i_n_k in its ``watch the batch-
  2928. file'' mode.) Using _b_u_f_f_c_h_a_n  with  the  ``-l1 -c50''  flags
  2929. will give behavior that is similar to the C News _r_e_l_a_y_n_e_w_s.
  2930.  
  2931.      _B_u_f_f_c_h_a_n can be run as a full exploder (``Tx'') in  the
  2932. _n_e_w_s_f_e_e_d_s file.  This means that you can use _c_t_l_i_n_n_d to send
  2933. a command line down _b_u_f_f_c_h_a_n's  input  stream.   (_I_n_n_d  will
  2934. also  send  a command whenever newsgroups are modified.) The
  2935. only useful message is ``flush'' which will close,  and  re-
  2936. open,  the  specified site files.  You should also note that
  2937. the flow is one-way; full exploders  cannot  send  any  ack-
  2938. nowledgement back.
  2939.  
  2940. _3.  _M_a_s_t_e_r/_s_l_a_v_e _r_e_p_l_i_c_a_t_i_o_n
  2941.  
  2942.      INN supports a simple model of  replicated  news  data-
  2943. bases:  a  single  master  host  pushes  out  updates to its
  2944. slaves.  The master is the only host that receives  articles
  2945. -  this includes both outside newsfeeds and articles written
  2946. by local users.  The slaves only receive articles  from  the
  2947. master.
  2948.  
  2949.      No special work is required to set up a master host.
  2950.  
  2951.      A slave is set up by starting _i_n_n_d with the ``-S'' flag
  2952. to  specify the name or IP address of the master host.  This
  2953. should be done by modifying the ``FLAG''  variable  in  your
  2954. __P_A_T_H__N_E_W_S_B_O_O_T  script.   If _i_n_n_d is started with the ``-S''
  2955. flag it will pass this flag on to _n_n_r_p_d.   This  means  that
  2956. when  anyone  connects to the slave and does a ``POST'' com-
  2957. mand, _n_n_r_p_d will connect to the master and offer  the  arti-
  2958. cle.
  2959.  
  2960.      Since the _n_n_r_p_d on the slave host will usually add  its
  2961. name  to the Path header, you should add ``Ap'' to the _f_l_a_g_s
  2962. field of the slave's entry on the master.
  2963.  
  2964.      Once the slave has been set up it is necessary to  have
  2965.  
  2966.  
  2967.  
  2968.                     February 14, 1992
  2969.  
  2970.  
  2971.  
  2972.  
  2973.  
  2974.                            - 46 -
  2975.  
  2976.  
  2977. the  master  feed it.  This is done by using an extension to
  2978. the NNTP protocol.  This extension, the ``XREPLIC'' command,
  2979. is  is  documented  in _i_n_n_d._8.  In order to do this you will
  2980. have to set up a _n_e_w_s_f_e_e_d_s entry for the slave.  This should
  2981. be  a  standard entry except that you will need to have both
  2982. the filename and the replication information written int the
  2983. batchfile.   To  do  this, put ``WnR'' in the _f_l_a_g_s field of
  2984. the entry.
  2985.  
  2986.      When you want to actually  send  the  articles  to  the
  2987. slave  site you will have to specify the ``-S'' flag in your
  2988. _i_n_n_x_m_i_t command.   Current  versions  of  _n_n_t_p_l_i_n_k  use  the
  2989. ``-x'' flag.
  2990.  
  2991.      When running as a slave, _i_n_n_d is  very  paranoid  about
  2992. staying  synchronized with its master.  Most noticeably, you
  2993. should make sure that all newgroup and rmgroup control  mes-
  2994. sages are handled identically on both systems.
  2995.  
  2996.  
  2997.  
  2998.  
  2999.  
  3000.  
  3001.  
  3002.  
  3003.  
  3004.  
  3005.  
  3006.  
  3007.  
  3008.  
  3009.  
  3010.  
  3011.  
  3012.  
  3013.  
  3014.  
  3015.  
  3016.  
  3017.  
  3018.  
  3019.  
  3020.  
  3021.  
  3022.  
  3023.  
  3024.  
  3025.  
  3026.  
  3027.  
  3028.  
  3029.  
  3030.  
  3031.  
  3032.  
  3033.  
  3034.                     February 14, 1992
  3035.  
  3036.  
  3037.  
  3038.  
  3039.  
  3040.                            - 47 -
  3041.  
  3042.  
  3043. _A_p_p_e_n_d_i_x _I_V:  _F_i_r_s_t-_t_i_m_e _U_s_e_n_e_t _o_r _N_N_T_P _I_n_s_t_a_l_l_a_t_i_o_n
  3044.  
  3045.      Since the needs and administration of systems varies so
  3046. much,  I can only give some general guidelines and advice in
  3047. this section.  Like UNIX system administration  in  general,
  3048. it  is unfortunately still true that most of the job will be
  3049. learned ``in the heat of the moment.'' Once you have INN set
  3050. up, however, it should not require much attention.  For gen-
  3051. eral  problems,  try  posting  to   ``news.sysadmin'';   use
  3052. ``news.software.nntp'' and ``news.software.b'' for installa-
  3053. tion problems.
  3054.  
  3055.      Once all the software has been compiled and  installed,
  3056. you  must  now get a newsfeed.  This involves having one (or
  3057. more) sites pass along to you all  the  articles  that  they
  3058. have  received.   Getting  articles  is  a  passive  action,
  3059. because it is  generally  more  efficient  that  way.   (The
  3060. _n_n_t_p_g_e_t  program  is  primarily a debugging aide and utility
  3061. program.  It is not the recommended way to get  a  newsfeed,
  3062. and most sites will prefer you not to use it for that.)
  3063.  
  3064.      If you already have Usenet access,  you  could  post  a
  3065. note  to ``news.admin'' asking for a feed.  Make sure to say
  3066. that you are looking for an NNTP connection!  If you  are  a
  3067. member of an NSFNet regional network, or subscribe to a com-
  3068. mercial IP network, ask your contact there  at  the  network
  3069. center.   If  they  do  not provide feeds directly, they can
  3070. probably help you find one.  You also might try  writing  to
  3071. the  <nntp-managers@colossus.apple.com>  mailing list.  This
  3072. will reach the news administrators of many NNTP sites on the
  3073. Internet.   (If  you want to join the list, remember to send
  3074. it to nntp-managers-request, not nntp-managers!)
  3075.  
  3076.      Once have a site willing to give you a feed,  you  need
  3077. to get the list of groups that they will give you.  You also
  3078. need to create those groups on your  machine.   The  easiest
  3079. way  to  do  this is usually to ask them for a copy of their
  3080. active file, and for you to add the entries  of  the  groups
  3081. that you're interested in.
  3082.  
  3083.      Once the groups are set up, your newsfeed will periodi-
  3084. cally connect to your NNTP server and offer it any new arti-
  3085. cles that have arrived since the last connection.  _I_n_n_d will
  3086. accept  the connection, receive the articles, and queue them
  3087. up for any sites that you feed.
  3088.  
  3089.      The next step is to set it up so that your articles are
  3090. sent  back to your newsfeed.  To do this, create a _n_e_w_s_f_e_e_d_s
  3091. entry, using the same name that shows up in the Path  header
  3092. that  you  see.   (If you use a different name, then use the
  3093. ``excludes'' sub-field to  avoid  offering  back  everything
  3094. they  offer  you.)  This  is usually done by giving them all
  3095. non-local articles as a  file  feed.   For  example,  ``Foo,
  3096. Incorporated''  does  not  give any foo.* articles to anyone
  3097.  
  3098.  
  3099.  
  3100.                     February 14, 1992
  3101.  
  3102.  
  3103.  
  3104.  
  3105.  
  3106.                            - 48 -
  3107.  
  3108.  
  3109. else.
  3110.  
  3111.      When someone at your site writes an article, _i_n_n_d  will
  3112. record  the  filename  in  the  batch file for your upstream
  3113. site.  Either _s_e_n_d-_n_n_t_p or _n_n_t_p_s_e_n_d will flush and lock  the
  3114. batchfile,  and  then  call _i_n_n_x_m_i_t to connect to the remote
  3115. site and send these queued articles out.   You  should  edit
  3116. the  script to list the sites you want, and arrange for _c_r_o_n
  3117. to run this script on a regular basis.  You can  run  it  as
  3118. often as you like, but 10 minutes is a common interval.
  3119.  
  3120.      If you want to feed any sites via UUCP, then  you  will
  3121. have  to  set up file feed entries for them in the _n_e_w_s_f_e_e_d_s
  3122. file, and arrange to have _c_r_o_n run the _s_e_n_d-_u_u_c_p  script  as
  3123. desired.   (UUCP  batches  are typically only done every few
  3124. hours.)
  3125.  
  3126.      Once you have news flowing in and out  of  the  system,
  3127. you  will have to expire it or your disks will fill up.  The
  3128. _n_e_w_s._d_a_i_l_y script should be run by _c_r_o_n in the middle of the
  3129. night.   It  will  summarize  that day's log files, and then
  3130. call _e_x_p_i_r_e to purge old news.  You might also want to  have
  3131. _c_r_o_n  run  _r_n_e_w_s  hourly  to  pick  up  any stalled batches.
  3132. Finally, if your feeds change IP address, you might  want  a
  3133. daily  job  that  does  ``ctlinnd  reload  hosts.nntp "flush
  3134. cache"''.  This is because _i_n_n_d does not currently  time-out
  3135. DNS entries.
  3136.  
  3137.      You will generally want to set up the _c_r_o_n jobs so that
  3138. they  are run as the news administrator, and not as root.  A
  3139. good version of _c_r_o_n that makes it easy to do  this  can  be
  3140. found on gatekeeper.dec.com in pub/misc/vixie/cron.tar.Z.
  3141.  
  3142.      You will also need to get one or more programs to  read
  3143. news.   There  are several freely-available programs around.
  3144. _R_n is popular, and is probably the best place to start.  The
  3145. official  distribution  is  available  for  anonymous FTP at
  3146. tmc.edu in the _r_n directory.
  3147.  
  3148.      Welcome to Usenet, and have fun!
  3149.  
  3150.  
  3151.  
  3152.  
  3153.  
  3154.  
  3155.  
  3156.  
  3157.  
  3158.  
  3159.  
  3160.  
  3161.  
  3162.  
  3163.  
  3164.  
  3165.  
  3166.                     February 14, 1992
  3167.  
  3168.  
  3169.  
  3170.  
  3171.  
  3172.                            - 49 -
  3173.  
  3174.  
  3175. _A_p_p_e_n_d_i_x _V:  _N_e_w_s _o_v_e_r_v_i_e_w _d_a_t_a_b_a_s_e
  3176.  
  3177.      There are now many newsreaders available that are  able
  3178. to  do ``threading.'' This is the ability to track a discus-
  3179. sion within a newsgroup by using the References  header  (or
  3180. other  data), regardless of changes in headers like the Sub-
  3181. ject line.  Examples of these readers include _n_n,  _t_r_n,  and
  3182. _g_n_u_s,  and  more  are becoming available.  Until recently, a
  3183. major problem with these readers is that they all required a
  3184. specialized  external  database that contained the threading
  3185. data.
  3186.  
  3187.      In  late  1992,  Geoff  Collyer   <geoff@world.std.com>
  3188. released  the  _n_o_v,  or  ``news  overview,''  package.  This
  3189. included database tools and,  and  client  access  routines,
  3190. that let the current threaded newsreaders use a common, tex-
  3191. tual, database.  An overview database  typically  adds  adds
  3192. about  7-9%  to  your storage requirements.  By default, the
  3193. overview files are stored in the spool  directory;  you  can
  3194. change  this to use an alternate tree that mirrors the spool
  3195. hierarchy by changing the __P_A_T_H__O_V_E_R_V_I_E_W_D_I_R parameter.
  3196.  
  3197.      INN includes full support  for  creating  and  expiring
  3198. news  overview databases.  To do this, add an entry like the
  3199. following to your _n_e_w_s_f_e_e_d_s file:
  3200.  
  3201.         overview:*:Tc,WO:/path/to/bin/overchan
  3202.  
  3203. (Make sure to replace /_p_a_t_h/_t_o/_b_i_n with the  value  of  your
  3204. __P_A_T_H__N_E_W_S_B_I_N  parameter.) Then reload the _n_e_w_s_f_e_e_d_s file or
  3205. restart your server.  To create the  initial  database,  run
  3206. the following command after you have started _o_v_e_r_c_h_a_n:
  3207.  
  3208.         expireover -a -s
  3209.  
  3210. You will also need to expire the overview data.  The easiest
  3211. way  to  do this is to add the ``expireover'' keyword to the
  3212. _c_r_o_n job that runs _n_e_w_s._d_a_i_l_y.
  3213.  
  3214.      The _n_n_r_p_d server includes  two  command  extensions  to
  3215. access  the  database; they are documented in the ``protocol
  3216. extensions'' part of _d_o_c/_n_n_r_p_d._8.  INN does not include  any
  3217. client  code  or modifications to any newsreaders to use the
  3218. overview data.  Most maintainers have agreed to support  the
  3219. overview  database,  including the INN extensions for remote
  3220. access.  You can find prototype  versions  of  many  readers
  3221. (work  done  by  Geoff)  on  world.std.com  in the directory
  3222. src/news; look for files named _r_e_a_d_e_r.dist.tar.Z.
  3223.  
  3224.  
  3225.  
  3226.  
  3227.  
  3228.  
  3229.  
  3230.  
  3231.  
  3232.                     February 14, 1992
  3233.  
  3234.  
  3235.  
  3236.  
  3237.  
  3238.                            - 50 -
  3239.  
  3240.  
  3241. _A_p_p_e_n_d_i_x _V_I:  _L_i_m_i_t_e_d _M_I_M_E _S_u_p_p_o_r_t
  3242.  
  3243.      This version of INN includes limited support for  MIME,
  3244. the  Multipurpose Internet Mail Extensions, described in RFC
  3245. 1341.  The support is the ability to do limited transport of
  3246. arbitrary  MIME  messages, and _n_n_r_p_d can add MIME headers to
  3247. all local postings that do not have them.
  3248.  
  3249.      In addition, there are patches available  for  _n_n_t_p_l_i_n_k
  3250. that  allow  it  to  do MIME transport.  The patches are not
  3251. (yet) part of the official release; if you need  them,  con-
  3252. tact Christophe Wolfhugel <Christophe.Wolfhugel@hsc-sec.fr>;
  3253. he did most of the INN work, too.
  3254.  
  3255.      You should be very careful if you have _n_n_r_p_d  add  MIME
  3256. headers.    To  do  this,  edit  _i_n_n._c_o_n_f  as  indicated  in
  3257. _d_o_c/_i_n_n._c_o_n_f._5.  Once this is done, all articles posted will
  3258. get  MIME  headers added.  Existing MIME headers will not be
  3259. modified, but missing  ones  will  be  added.   The  default
  3260. values to add to _i_n_n._c_o_n_f are these:
  3261.  
  3262.         mime-version: 1.0
  3263.         mime-contenttype text/plain; charset=us-ascii
  3264.         mime-encoding: 7bit
  3265.  
  3266. An internationalized site might want to use these values:
  3267.  
  3268.         mime-version: 1.0
  3269.         mime-contentType: text/plain; charset=iso-8859-1
  3270.         mime-encoding: 8bit
  3271.  
  3272. It is possible to use these values because  INN  provides  a
  3273. clean eight-bit data path.  Unless you make special arrange-
  3274. ments with your peers, however, you must transmit  seven-bit
  3275. data.   Doing  this  will  require  special transmit agents.
  3276. Note that _n_n_r_p_d is not a Mime-compatible reader.   You  must
  3277. have  software  to extract the data and present it appropri-
  3278. ately.
  3279.  
  3280.      If you configure your site to use seven-bit data,  then
  3281. you  must  also make sure that none of your software creates
  3282. eight-bit articles.  _N_n_r_p_d does not  verify  this.   If  you
  3283. configure  your site to use eight-bit data, then ASCII works
  3284. fine, but remember that in quoted-printable long  lines  are
  3285. cut  and  that  the  equal  sign  (``='') is quoted; this is
  3286. really bad for source code postings, among others.
  3287.  
  3288.      The character set can also cause problems.  If you  use
  3289. ``iso-8859-1'' you must make sure that your posting software
  3290. uses this character set  (e.g.,  not  CP-437  under  MS-DOS)
  3291. because _n_n_r_p_d does not do any conversion.
  3292.  
  3293.      In general, be very cautious.
  3294.  
  3295.  
  3296.  
  3297.  
  3298.                     February 14, 1992
  3299.  
  3300.  
  3301.  
  3302.  
  3303.  
  3304.                            - 51 -
  3305.  
  3306.  
  3307.      MIME articles can only be sent using _i_n_n_x_m_i_t;  work  on
  3308. _b_a_t_c_h_e_r  is in progress.  Unless the ``-M'' flag is used, no
  3309. MIME conversions are done.  If the flag is used, the follow-
  3310. ing   happens:  Articles  with  a  Content-Transfer-Encoding
  3311. header of ``8bit'' or ``binary'' are forwaded  in  ``quoted-
  3312. printable''  format (the ``base64'' format will be available
  3313. soon).  All other articles -- in particular,  those  without
  3314. MIME  headers,  those  of type ``message'' or ``multipart,''
  3315. those with Content-Transfer-Encoding header of  ``7bit''  --
  3316. are forwarded without any change.
  3317.  
  3318.  
  3319.  
  3320.  
  3321.  
  3322.  
  3323.  
  3324.  
  3325.  
  3326.  
  3327.  
  3328.  
  3329.  
  3330.  
  3331.  
  3332.  
  3333.  
  3334.  
  3335.  
  3336.  
  3337.  
  3338.  
  3339.  
  3340.  
  3341.  
  3342.  
  3343.  
  3344.  
  3345.  
  3346.  
  3347.  
  3348.  
  3349.  
  3350.  
  3351.  
  3352.  
  3353.  
  3354.  
  3355.  
  3356.  
  3357.  
  3358.  
  3359.  
  3360.  
  3361.  
  3362.  
  3363.  
  3364.                     February 14, 1992
  3365.  
  3366.  
  3367.